在c#中使用EPPlus更新excelsheet

S A*_*rew 1 c# excel epplus

我有一个excel文件,其中包含名为的工作表Data.此表已包含很少的数据.我需要打开这个文件并在其中添加更多数据.我试过搜索这个,但每个人都只是在他们的工作簿中创建新的工作表.我需要更新当前的表格.以下是我的代码:

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); 
} 
Run Code Online (Sandbox Code Playgroud)

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

Ser*_*rge 11

你这样做:

  1. MemoryStream在内存中创建一个对象来存储二进制数据.
  2. 打开文件并将其读入MemoryStream对象.
  3. 根据ExcelPackage对象中的数据创建MemoryStream对象.
  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();
} 
Run Code Online (Sandbox Code Playgroud)