NPOI如何给单元格赋空值

qq_15170937 2014-06-17 10:27:52
手上一个项目中需要操作一个EXCEL表,表中已经有了一些公式,例如Excel中A6的值是通过计算A1-A5中有值的计数(比如A1,A2,A5中是”V“,A3,A4的值是空,则A6的值是3)。现在项目通过NPOI操作EXCEL,根据逻辑判断想给原来有值的A3赋予空值,然后A6的值会自动-1,手动直接删除A3的值是可以实现的,用程序执行:sheet.sheet.GetRow(1).GetCell(3)..SetCellValue(""),A3的值看起来是空了,但是A6的值不会变。已经调动了sheet.ForceFormulaRecalculation=true;

估计是EXCEL认为”“不是空值,所以依然计算了这个单元格,如何让NPOI给单元格赋空值,或者是清除单元格中的值,让A6的值会-1.
感谢~!
...全文
1097 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_15170937 2014-06-23
  • 打赏
  • 举报
回复
[quote=引用 11 楼 save4me 的回复:] 使用.SetCellType(CellType.Blank)设置单元格类型Blank就可以了。在NPOI 2.0下面测试实现A6的=COUNTA(A1:A5)计算从3变为2

.SetCellType(CellType.Blank);
真的吗,我明天去公司试试,可以就来散分结贴,非常感谢!
qq_15170937 2014-06-23
  • 打赏
  • 举报
回复
引用 9 楼 sp1234 的回复:
我们避免使用 NPOI。使用微软的组件。
为什么?我看网上都说很方便,关键是我们公司服务器一碰到几个部门同时用EXCEL倒出数据时,那速度就明显变差,所以我才想更换的。
save4me 2014-06-23
  • 打赏
  • 举报
回复
使用.SetCellType(CellType.Blank)设置单元格类型Blank就可以了。在NPOI 2.0下面测试实现A6的=COUNTA(A1:A5)计算从3变为2

.SetCellType(CellType.Blank);
引用 8 楼 qq_15170937 的回复:
还是不行啊,我的意思是通过鼠标放在那个单元格上按退格键,然后按确定,另个单元格的值会通过公司计算,自动-1.但是通过程序NPOI去设置SetCellValue("")却不行。通过微软提供的EXCEL组件访问EXCEL(APP.Workbook那个)也是通过程序设置为空,却可以,苦恼啊!
tcmakebest 2014-06-21
  • 打赏
  • 举报
回复
单元格有没有 Clear() 方法
  • 打赏
  • 举报
回复
我们避免使用 NPOI。使用微软的组件。
qq_15170937 2014-06-21
  • 打赏
  • 举报
回复
还是不行啊,我的意思是通过鼠标放在那个单元格上按退格键,然后按确定,另个单元格的值会通过公司计算,自动-1.但是通过程序NPOI去设置SetCellValue("")却不行。通过微软提供的EXCEL组件访问EXCEL(APP.Workbook那个)也是通过程序设置为空,却可以,苦恼啊!
wind_cloud2011 2014-06-19
  • 打赏
  • 举报
回复

  sheet.GetRow(2).CreateCell(2).SetCellValue("");
                 sheet.GetRow(2).CreateCell(3).SetCellValue(3);
                 ICell cell_range = sheet.GetRow(2).GetCell(3);
                 if (cell_range.ToString()=="3")
                 {
                     sheet.GetRow(2).CreateCell(4).SetCellValue(-1);

                 }

wind_cloud2011 2014-06-19
  • 打赏
  • 举报
回复
sheet.GetRow(2).CreateCell(2).SetCellValue("");
qq_15170937 2014-06-19
  • 打赏
  • 举报
回复
一天过去了,没人知道解决的方法吗? 知道的大神,帮忙解答下,万分感谢!
save4me 2014-06-18
  • 打赏
  • 举报
回复
在文章TIPS-NPOI修改Excel欄位後自動更新公式計算結果的回复中,有人提到下面的方法:

HSSFFormulaEvaluator  eva = New HSSFFormulaEvaluator(workbook)
NPOI.SS.UserModel.ICell cell_F17 = eva.EvaluateInCell(sheet.GetRow(16).GetCell(5))
Response.Write(String.Format("F17={0}!!", cell_F17.NumericCellValue))
泡泡龙 2014-06-18
  • 打赏
  • 举报
回复
NPOI没有delete方法吗?
save4me 2014-06-18
  • 打赏
  • 举报
回复
你的这句是你自己是复制你的程序里面的吗?好像多了一个点。能把代码贴出来吗,这样可以调试。

sheet.sheet.GetRow(1).GetCell(3)..SetCellValue("")
qq_15170937 2014-06-18
  • 打赏
  • 举报
回复
回复1楼:代码不是复制的,自己写上去,所以写多了。 回复3楼:我测试过不是没有更新,因为如果原来A3是空的,而我用程序赋值为“V”,则A6会+1. 所以问题集中在,如何用NPOI将某个单元格的值变成空,让EXCEL公式不计算。 感谢你们的回复~!

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧