将数据导出到Excel通过Open XML启用macros

我有一个Excel工作表,我用作模板文件导出数据。

Excel工作表是XLSM文件,在VBA中写入的代码很less。

每次使用时间戳复制和重命名文件,应将数据写入复制的xlsm文件, 但不写入数据

我正在使用Open XML库。

如果我使用xlsx模板文件,也是一样的。

是不是可以通过Open XML在xlsm Excelmacros上编写?

如果是,请记住任何指示。

这个答案中的代码将复制任何Excel文件,并将其切换到启用macros的工作簿。 我已经通过一个简单的Excel 2016工作簿和启用macros的工作簿对它进行了testing,它在源文件所在的目录中创build一个新文件SaveMEW.xlsm 。 确保源文件的完整path被放入`_sourceFilevariables。

  var _sourceFile = " PATH TO YOUR TEMPLATE FILE "; using (var templateFile = File.Open(_sourceFile, FileMode.Open, FileAccess.Read)) { using (var stream = new MemoryStream()) { templateFile.CopyTo(stream); using (var spreadsheetDocument = SpreadsheetDocument.Open(stream, true)) { spreadsheetDocument.ChangeDocumentType(SpreadsheetDocumentType.MacroEnabledWorkbook); } byte[] buffer = stream.ToArray(); MemoryStream ms = new MemoryStream(buffer); FileStream file = new FileStream(System.IO.Path.GetDirectoryName(_sourceFile) + "/SaveMEW.xlsm", FileMode.Create, FileAccess.Write); ms.WriteTo(file); file.Close(); } }