将XLSM转换为XLSX

use*_*650 3 c# openxml xlsx xlsm epplus

我正在使用EPPLUS库从Excel读取数据以创建另一个文件.不幸的是,它不支持.XLSM扩展文件.有没有一种很好的方法将.XLSM文件转换为.XLSX文件,以便用EPPLUS读取文件?

(使用EPPLUS进行阅读会很好,因为我的所有代码都是用它编写的:))

amu*_*rra 9

为此,您需要使用Open XML SDK 2.0.下面是我尝试时为我工作的一段代码:

byte[] byteArray = File.ReadAllBytes("C:\\temp\\test.xlsm");
using (MemoryStream stream = new MemoryStream())
{
    stream.Write(byteArray, 0, (int)byteArray.Length);
    using (SpreadsheetDocument spreadsheetDoc = SpreadsheetDocument.Open(stream, true))
    {
       // Change from template type to workbook type
       spreadsheetDoc.ChangeDocumentType(SpreadsheetDocumentType.Workbook);
    }
    File.WriteAllBytes("C:\\temp\\test.xlsx", stream.ToArray()); 
}
Run Code Online (Sandbox Code Playgroud)

这段代码的作用是启用宏启用的工作簿文件并将其打开到SpreadsheetDocument对象中.此对象的类型是MacroEnabledWorkbook,但由于您希望它作为Workbook您调用ChangeDocumentType方法将其从a更改MacroEnabledWorkbook为a Workbook.这将起作用,因为.xlsm和.xlsx文件之间的基础XML是相同的.