一、背景
今天在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