openxml spreadsheat另存为

jwd*_*aan 16 c# excel openxml-sdk

我有一个Excel 2007电子表格,我用OpenXML SDK 2编辑.我删除了一些行等.我想知道如何将Spreadsheetdocument保存到另一个文件名.

amu*_*rra 14

据我所知,没有内置的方法来更改文件名,但由于编辑文件的一种方法是使用流,因此在写出流内容时可以轻松地给出所需文件的名称:

byte[] byteArray = File.ReadAllBytes("C:\\temp\\oldName.xltx");
using (MemoryStream stream = new MemoryStream())
{
    stream.Write(byteArray, 0, (int)byteArray.Length);
    using (SpreadsheetDocument spreadsheetDoc = SpreadsheetDocument.Open(stream, true))
    {
       // Do work here
    }
    File.WriteAllBytes("C:\\temp\\newName.xlsx", stream.ToArray()); 
}
Run Code Online (Sandbox Code Playgroud)

还有其他方法可以更改名称,例如在ASP.NET MVC Web应用程序中将文件返回给用户时,但这取决于您要执行的操作.


小智 9

看看这个基于OpenXML的ClosedXML库; 它简化了大量的文档操作,并为您提供了SaveAs方法.这是你可以做的一个例子.

        var workbook = new XLWorkbook();
        var worksheet = workbook.Worksheets.Add("Sample Sheet");
        worksheet.Cell("A1").Value = "Hello World!";
        workbook.SaveAs("HelloWorld.xlsx");
Run Code Online (Sandbox Code Playgroud)

  • 我想继续使用OpenXML,但是在尝试弄清楚如何打开现有的Excel模板,填写一些信息并将其推送到浏览器2小时之后,我尝试使用了ClosedXML.我使用ClosedXML只用了3分钟.我不得不说. (2认同)

Edi*_*Edi 5

我强烈推荐 ClosedXML - 第一次使用它,最初我使用标准的 Open XML 2.0 SDK 在几个小时内完成了“从 excel 导入”功能 - 我在不到 15 分钟的时间内重写了它,而且我已经使用此工具在 10 分钟内完成导出到 excel。