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

问题描述

我正在研究一个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文件并在其上添加了加密。希望对免费版本的加载和保存文件没有限制。