C#开发之基于 NPOI 的操作 Excel 开发体验
最近遇到一个数据导入的需求,语言是.net framework 4.7 的 C#。但是,这次主要探讨 NPOI 的体验,原则就是向前兼容。所以采用.xls 的支持。网上的资料,我稍微整合了一些。
#1 单元格下拉框
在开发中我们会遇到为单元格设置下拉框。一般可以编写如下:
var cellRanges = new CellRangeAddressList(firstRow, lastRow, firstCol, latsCol);
DVConstraint constraint = DVConstraint.CreateExplicitListConstraint(stringArray);
HSSFDataValidation validate = new HSSFDataValidation(cellRanges, constraint);
validate.ShowProptBox = true;
sheet.AddValidationData(validate);
但是,如果字符串数组存在长度限制,如 NPOI 导出 Excel 时下拉列表值超过 255 的问题(String literals in formulas can't be bigger than 255 characters ASCII)
解决方案
通过额外新建 Excel 的 Sheet 页保存下拉内容,并转换为下拉框数据。
复制代码
#2 添加批注
代码如下:
复制代码
#3 读取数据
如何解析公式的结果
代码如下:
复制代码
如果希望读取公式也可以如下:
var data = row.GetCell(i).ToString();
但是需要注意结果没有等号“=”, 这里我是演示,所以写了局部变量。
日期格式 MM-dd-yy 转 yyyy-MM-dd
由于 Excel 的数字和日期都是 Numeric 格式,;处理如下:
复制代码
结语
NPOI 还是一个相对成熟的 Excel 操作库。网上的资料确实写的比较潦草。但是作为程序员,必须学会耐心,尤其是 debug。
参考文档
版权声明: 本文为 InfoQ 作者【DisonTangor】的原创文章。
原文链接:【http://xie.infoq.cn/article/1368087621bf60093a055f2e9】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论