一、背景
今天在C#中使用epplus給excel表格寫入值時,發現其他行的值都可以正常寫入,但是有一行值不能寫入,並且這行如果之前有值,也會在保存excel之後,值被清空。
二、解決思路
將當前所引用的epplus組件升級爲最新的穩定版。
源代碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OfficeOpenXml;
using System.IO;
namespace InsertValueIntoExcelWithEpplus
{
class Program
{
static void Main(string[] args)
{
//Excel文件所在的地址
FileInfo fileInfo= new FileInfo(@"xxx.xlsx");
using (ExcelPackage excelPackage= new ExcelPackage(fileInfo))
{
//指定需要寫入的sheet名
ExcelWorksheet excelWorksheet= excelPackage.Workbook.Worksheets["sheet名字"];
//比如修改第一行,第一列的值爲 0
excelWorksheet.Cells[1, 1].Value = 0;
//修改第一行,第二列的值爲 你好
excelWorksheet.Cells[1, 2].Value = "你好";
//然後保存即可
excelPackage.Save();
}
}
}
}
以前寫入都好好的,不知道這次爲什麼寫不進去。
解決方案:當前所用的epplus版本是4.5.3.1,刪除了epplus4.5.3.1,然後通過nuget安裝了最新的穩定版5.1.2.0,這個時候就可以正常寫入了。這應該是epplus4.5.3.1的一個bug,找了好久,通過換epplus版本才解決!
三、注意事項
1.當找不到程序的bug時,有可能是組件自身的bug,嘗試升級爲最新的組件,看能否解決問題,舉一反三。
2.大家好,我是黑夜の騎士,歡迎大家關注我的博客,筆者將持續輸出BIM相關軟件開發、移動互聯網開發以及遊戲編程乾貨;
3.歡迎加入BIM行業開發交流羣,獲取更多開發資料 羣號:711844216
4.歡迎加入U3D魔法師交流羣,共同學習進步,羣號:1105535938