如何使用EPPlus向现有的Excel文件添加新工作表?

8
使用EPPlus,我想在Excel文件中添加一个新的工作表,但如果文件中已经有其他工作表,我不想删除它们,并且我希望将其插入到文件的第一个工作表位置。 以下是我为快速测试编写的代码,但它会删除所有现有的工作表:
using (ExcelPackage p = new ExcelPackage())
{
    p.Workbook.Worksheets.Add("HubaHuba");
    p.Workbook.Worksheets.MoveToStart("HubaHuba");
    ExcelWorksheet ws = p.Workbook.Worksheets[1];
    ws.Name = "HubaHuba";

    var cell = ws.Cells[1, 1];
    cell.Value = "dfsdfsdfsd";
    cell = ws.Cells[1, 2];
    cell.Value = "347895y5 Oh";

    Byte[] bin = p.GetAsByteArray();
    File.WriteAllBytes(path,bin);
}

你并不是将它们添加到现有文件中。你正在创建一个新文件,然后覆盖保存路径上的文件。 - mason
2个回答

10
using (ExcelPackage excelEngine = new ExcelPackage())
{
     excelEngine.Workbook.Worksheets.Add("sheet1");
     excelEngine.Workbook.Worksheets.Add("sheet2");
     excelEngine.Workbook.Worksheets.Add("sheet3");

     String myFile= "c:\....\xx.xlsx";
     excelEngine.SaveAs();

}

当您使用 Add 时,工作表将添加到当前文件工作表的结尾。如果您想在特定位置添加,请使用此函数:
excelEngine.Workbook.Worksheets.Add("sheet0");
excelEngine.Workbook.Worksheets.MoveBefore(4, 1);

在第四个位置添加了sheet0,然后使用之前的代码将其移动到第一位。


4
这是因为你正在使用命令 File.WriteAllBytes 重写该文件。相反,你应该只调用 p.Save() 并且 ExcelPackage 需要使用接受文件路径的构造函数。然后它就能工作了。

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