在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); }
但它没有更新工作表。 我不是我做错了什么。 任何人都可以帮助我。 谢谢
你正在这样做:
- 在内存中创build一个
MemoryStream
对象来存储二进制数据。 - 打开文件并将其读入到
MemoryStream
对象中。 - 根据
MemoryStream
对象中的数据创build一个ExcelPackage
对象。 - 对电子表格进行更改。
- 保存更改回到
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(); } }