在c#中使用EPPlus更新excelsheet

我有一个Excel文件,其中包含名为Data表。 这张表已经包含了一些数据。 我需要打开这个文件并在其中添加更多的数据。 我试过寻找这个,但每个人都只是在他们的工作簿中创build新的工作表。 我需要更新当前表单。 以下是我的代码:

 MemoryStream ms = new MemoryStream(); using (FileStream fs = File.OpenRead(@"Path\File.xlsx") using (ExcelPackage excelPackage = new ExcelPackage(fs)) { ExcelWorkbook excelWorkBook = excelPackage.Workbook; ExcelWorksheet excelWorksheet = excelWorkBook.Worksheets.First(); excelWorksheet.Cells[1, 1].Value = "Test"; excelWorksheet.Cells[3, 2].Value = "Test2"; excelWorksheet.Cells[3, 3].Value = "Test3"; excelPackage.SaveAs(ms); } 

但它没有更新工作表。 我不是我做错了什么。 任何人都可以帮助我。 谢谢

你正在这样做:

  1. 在内存中创build一个MemoryStream对象来存储二进制数据。
  2. 打开文件并将其读入到MemoryStream对象中。
  3. 根据MemoryStream对象中的数据创build一个ExcelPackage对象。
  4. 对电子表格进行更改。
  5. 保存更改回到MemoryStream对象。

这就是电子表格文件没有被更新的原因。

使用FileInfo并用ExcelPackage直接打开文件:

 // using System.IO; FileInfo file = new FileInfo(@"Path\File.xlsx"); using (ExcelPackage excelPackage = new ExcelPackage(file)) { ExcelWorkbook excelWorkBook = excelPackage.Workbook; ExcelWorksheet excelWorksheet = excelWorkBook.Worksheets.First(); excelWorksheet.Cells[1, 1].Value = "Test"; excelWorksheet.Cells[3, 2].Value = "Test2"; excelWorksheet.Cells[3, 3].Value = "Test3"; excelPackage.Save(); } 

尝试这个

 var file = new FileInfo(path); if (file .Exists) { using (ExcelPackage excelPackage = new ExcelPackage(file)) { ExcelWorksheet ws = excelPackage.Workbook.Worksheets.First(); ws.Cells[1,1].Value = "Test1"; excelPackage.Save(); } }