背景

最近(其实是月初)CXF同学问大D了一个Excel的使用问题,把大D问住了,在得知需要大量处理且经常处理同格式的Excel文件的情况下,就想到了写个小工具来搞定,于是用C#快速造了一个轮子出来。

C#不是太熟,随便写写。

本文将对造这个轮子时遇到的问题做一个笔记。

由于需要一些共有的数据,xml不熟,那就用最熟的json来存储,于是采用Netwtonsoft.Json来处理json,用NPOI来处理Excel。

json的问题

json的读写

使用Netwtonsoft.Json处理

json文件示例

从文件读取

读取就是简单的文本操作,如果数据少,甚至都可以考虑硬编码进去。

写入文件

test.json文件中的result对象中插入一个新的对象。

从json文件中删除一个对象

test.json文件中将name="小明"的对象删除。

WinForm的一些问题

动态向窗体的FlowLayoutPanel添加其他控件

向名为nameArea的FlowLayoutPanel控件中添加两个TextBox,同时数据绑定到文本框中。

多线程带委托

这次的小工具当中不需要后台进程返回数据,但由于任务执行时间长,前台阻塞,UI无法刷新,所以使用多线程带委托的形式使后台进程操作前台控件。

NPOI的一些问题

NPOI是.NET平台上非常优秀的第三方Excel/Word功能Nuget包,然而官方的文档和教程都已经失效了,略有遗憾。

NPOI提供了两个不同的命名空间,NPOI.HSSF.UserModel是支持Excel 2003的,NPOI.XSSF.UserModel是支持Excel 2007及以后版本的。

虽然看到说有支持版本自动判别的工厂类,但是由于大D对C#并不熟悉,先暂时用文件后缀名判别的方式来区分03和07的差异。

打开表格

获取行或单元格

获取单元格内容,需要知道单元格内的内容是什么类型的,如果是数字类型,则使用NumericCellValuel来获取。

写入表格

绘制折线图

这个例子是从官方例子上修改而来的,官方例子比较老,在新版本的NPOI上运行有些问题,所以暂时注释掉了存在问题的代码。

需要解释的是后面的几个参数。

需要注意的是,如果在表格内绘制多张图表,一定要注意图表的起始位置参数,因为是行号,所以可能会出现两个图表重叠在一起导致文件损坏的情况。

后记

已经给CXF发过去给他用上了,现在还没有得到有问题的反馈,如果有的话,会继续更新在这里。

版权声明
转载保留版权: 大D技研室 | 《xlsBlender开发笔记》
本文链接地址:https://www.dadclab.com/archives/7408.jiecao
转载须知:如果您需要转载本文,请将版权信息,版权授权方式,以及本文的链接地址注明,谢谢合作。
本文被贴上了: , 标签