【问题标题】:How to Programmatically Create OOXML Strict Documents如何以编程方式创建 OOXML 严格文档
【发布时间】:2022-08-05 19:34:21
【问题描述】:
使用“另存为”时,可以在 Excel 文件类型下拉列表中手动将 Excel 电子表格另存为“严格打开 XML”文件,而不是将其保存为默认的过渡 OOXML 文件。对于 OOXML 标准的严格和过渡文件格式变体,文件格式是相同的 .xlsx。
我如何通过自动化工作流程以编程方式做同样的事情,例如C#?目的是将过渡 Excel 文件批量转换为严格的 Excel 文件。
我发现 Office XML SDK 的这些代码 sn-ps 部分:
我可以使用它们或其他方式进行从过渡到严格的批量转换吗?
标签:
excel
format
spreadsheet
openxml
【解决方案1】:
经过广泛研究后,我发现唯一可能的方法是使用 Excel.Interop 并让您的 Excel 安装在后台处理转换。这不是一个很好的解决方案,因为它依赖于 Excel,但它是一种编程方法。
您可以在此处找到 Excel.Interop 包:https://www.nuget.org/packages/Microsoft.Office.Interop.Excel
我遇到了一个问题,包找不到我的 Excel 安装,所以我必须对您计算机上的 Excel 互操作 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
}
PS。如果有人发现使用 Open XML SDK 或其他 C# 框架的编程方法,请仍然发布您的答案。