在 C# 中使用 EPPlus 更新 Excelsheet

Updating the excelsheet using EPPlus in c#

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

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

但它没有更新 sheet。我没有做错什么。谁能帮帮我。谢谢

您正在这样做:

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

Try this

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