将XLSM转换为XLSX [英] Convert XLSM to XLSX
问题描述
我正在使用EPPLUS库从Excel读取数据以创建另一个文件.不幸的是,它不支持.XLSM扩展文件.是否有一种很好的方法可以将.XLSM文件转换为.XLSX文件,以便使用EPPLUS读取文件?
I'm using the EPPLUS library to read data from Excel to create another file. Unfortunately it does not support the .XLSM extension file. Is there a nice way to convert .XLSM files to .XLSX file for the purpose of reading the file with EPPLUS?
(使用EPPLUS进行阅读会很好,因为我所有的代码都已经使用它编写了:))
(using EPPLUS for reading would be nice because all my code is already written using it :) )
推荐答案
In order to do this you will need to use the Open XML SDK 2.0. Below is a snippet of code that worked for me when I tried it:
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());
}
What this code does is it takes your macro enabled workbook file and opens it into a SpreadsheetDocument
object. The type of this object is MacroEnabledWorkbook
, but since you want it as a Workbook
you call the ChangeDocumentType
method to change it from a MacroEnabledWorkbook
to a Workbook
. This will work since the underlying XML is the same between a .xlsm and a .xlsx file.
这篇关于将XLSM转换为XLSX的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!