是否可以使用 OpenXML SDK 创建加密的 Excel 文件

Is it possible to create an encrypted Excel file with the OpenXML SDK

我正在开发一个 C# 项目,该项目创建、加密和发送 excel 文件作为电子邮件附件。 我不打算保护 excel,而是加密它并设置打开它的密码。 甚至可以使用 OpenXML SDK 吗? 我试过了,但我不认为这是为了加密:

string hexConvertedPassword = HexPasswordConversion("Azerty123");
WorkbookProtection WorkbookProt = new WorkbookProtection()
{
    WorkbookPassword = hexConvertedPassword,
    RevisionsPassword = hexConvertedPassword,
    LockRevision = true,
    LockStructure = true,
    LockWindows = true,
};
Workbook workbook = new Workbook();
workbook.Append(WorkbookProt);

我已经在文档中搜索过,但可能遗漏了。

我知道有些图书馆可以做到这一点,比如 devexpress、EasyXLS、Spire.Xls 等,但这些都非常昂贵。

您可以尝试通过逐个单元格读取来加密 DOCUMENT 的内容,并生成一个新的 .xlsx 文件。

    WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
    WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();
    SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First();
    string text;
    foreach (Row r in sheetData.Elements<Row>())
    {
        foreach (Cell c in r.Elements<Cell>())
        {
            // send to ecryption function.

            text = c.CellValue.Text;
            Console.Write(text + " ");
            
            
        }
    }

更多详情请访问:https://docs.microsoft.com/en-us/office/open-xml/how-to-parse-and-read-a-large-spreadsheet

最后我使用 FreeSpire.XLS 加载我现有的 Excel 文件并在其上添加加密。希望免费版的加载和保存文件没有限制。