通过Open XML将数据导出到启用宏的Excel中。

6

我有一个Excel表格,作为数据导出的模板文件。

这个Excel表格是一个XLSM文件,并且其中写了一些VBA代码。

每次复制并重命名文件,时间戳和数据应该写入复制的xlsm文件,但是它没有写入数据

我正在使用Open XML库进行操作。

如果我使用xlsx模板文件,则同样有效。

是否不可能通过Open XML在xlsm Excel带宏的文件中进行写入操作?

如果可以,请注意以下任何说明。


2
SpreadsheetDocument package = SpreadsheetDocument.Create(filePath, SpreadsheetDocumentType.MacroEnabledWorkbook - Jack Miller
不想将数据写入单元格值或宏代码中吗? - Jack Miller
1个回答

2

这个答案中的代码可以复制任何Excel文件并将其转换为启用宏的工作簿。我已经对简单的Excel 2016工作簿和启用宏的工作簿进行了测试,它会在源文件所在的同一目录下创建一个名为SaveMEW.xlsm的新文件。确保将源文件的完整路径放入“_sourceFile”变量中。

    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();
            }
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接