У меня есть XLS файл с макросом , чтобы преобразовать его в формат OpenXML, я использую Spire.XLS и могу конвертировать файл в Формат XLSM .Затем с помощью OpenXML SDK для преобразования XLSM файла в XLSX формат, как показано ниже:
string lstrOpenXMLXLSMIPDTemplatePath = pstrIPDTemplatePath.Replace(".xls", ".xlsm");
Spire.Xls.Workbook lobjDSTemplateWorkbook = new Spire.Xls.Workbook();
lobjDSTemplateWorkbook.DisableMacrosStart = false;
lobjDSTemplateWorkbook.LoadFromFile(pstrIPDTemplatePath);
lobjDSTemplateWorkbook.SaveToFile(lstrOpenXMLXLSMIPDTemplatePath, Spire.Xls.ExcelVersion.Version2013);
pstrOpenXMLIPDTemplatePath = lstrOpenXMLXLSMIPDTemplatePath.Replace(".xlsm", ".xlsx");
using (var XLSMStream = File.OpenRead(lstrOpenXMLXLSMIPDTemplatePath))
using (var XLSXStream = new MemoryStream())
{
XLSMStream.CopyTo(XLSXStream);
using (var doc = SpreadsheetDocument.Open(XLSXStream, true))
{
doc.DeletePartsRecursivelyOfType<VbaDataPart>();
doc.DeletePartsRecursivelyOfType<VbaProjectPart>();
doc.ChangeDocumentType(DocumentFormat.OpenXml.SpreadsheetDocumentType.Workbook);
}
File.WriteAllBytes(pstrOpenXMLIPDTemplatePath, XLSXStream.ToArray());
}
Есть ли какой-либо для преобразования файла непосредственно в XLSX формат с Spire.XLS Dll или другим способом .