excel 如何以编程方式创建OOXML严格文档

6ojccjat  于 2023-01-18  发布在  其他
关注(0)|答案(1)|浏览(133)

当使用“另存为”而不是将Excel电子表格保存为默认工作簿OOXML文件(OOXML标准的“过渡”变体)时,可以在Excel中将Excel电子表格手动保存为“Strict Open XML”文件类型。OOXML标准的Strict和Transitional文件格式变体的扩展名均为.xlsx。
我如何通过自动化工作流(例如C#)以编程方式完成同样的事情?目的是将Transitional Excel文件批量转换为Strict Excel文件。
我发现这些代码片段是Office XML SDK的一部分:

我可以使用它们或其他方法进行从Transitional到Strict的批量转换吗?

**更新:**我正在与this issue中Open XML SDK的开发人员进行对话。

vjrehmav

vjrehmav1#

经过广泛的研究,我发现唯一可行的方法是使用Excel.Interop,并让您的Excel安装在后台处理转换。这不是一个很好的解决方案,因为它依赖于Excel,但它是一种编程方法。
您可以在此处找到Excel.Interop包:https://www.nuget.org/packages/Microsoft.Office.Interop.Excel
我遇到了一个问题,软件包找不到我的Excel安装,因此我必须重新引用您计算机上的Excel Interop DLL. Add reference > Browse > C:\Windows\assembly\GAC\Microsoft.Office.Interop.Excel,并从此处的文件夹中选择DLL。我还从路径C:\Windows\assembly\GAC_MSIL\office的子文件夹中添加了DLL

转换代码

using Excel = Microsoft.Office.Interop.Excel;

void Convert_Transitional_to_Strict(string input_filepath, string output_filepath)
{
    Excel.Application app = new Excel.Application(); // Create Excel instance
    app.DisplayAlerts = false; // Don't display any Excel prompts
    Excel.Workbook excelWorkbook = app.Workbooks.Open(input_filepath); // Create workbook instance and open Excel Workbook for conversion
    excelWorkbook.SaveAs(output_filepath, 61); // Save file as .xlsx Strict
    excelWorkbook.Close(); // Close the Workbook
    app.Quit(); // Quit Excel Application
}

如果有人发现了使用OpenXMLSDK或其他C#框架的编程方法,请仍然张贴您的答案。

相关问题