这篇文章也是关于数据导入导出的,不过对应的Excel文件是根据相应的配置信息动态生成的。程序难度比事先定义好的Excel文件难度要大的多。
先介绍一下情况,这个功能是我所做的工资管理的一部分,工资管理的功能为工资套账的维护,工资项目维护,工资子项维护,工资设置导入,工资发放导入,自定义计算公式,统计报表等。需要生成的Excel文件的列有职工号,姓名,部门,以及按选定工资项目所辖的工资子项(工资子项的数目不定,这种情况下使用动态生成Excel是比较好的选择)。这个功能中最为重要的一点就是建立某个工资项目所辖的工资子项与生成的Excel列之间的对应关系。Xml文件的内容如下
<?xml version="1.0" encoding="GB2312"?>
<root name="初级程序员基本工资" Id="1" index="1">
<number name="职工编号" Id="" index="2" />
<Username name="姓名" Id="" index="3" />
<dept name="部门" Id="" index="4" />
<AccountItem name="初级程序员基本工资A级" Id="4" index="5" />
<AccountItem name="初级程序员基本工资B级" Id="5" index="6" />
<AccountItem name="初级程序员基本工资C级" Id="6" index="7" />
<AccountItem name="初级程序员基本工资D级" Id="27" index="8" />
<AccountItem name="计算值" Id="37" index="9" />
</root>
tagname 为number,Username,dept这三项是固定的,后面的AccountItem是工资子项数量不固定
Id 为子项的编号,index 为XML节点映射到Excel文件列中的列编号(使用数字方便程序的编写,这里就没有用A1,B2这样的列编号)。这个XML文件是自动生成的。
生成XML文件之后就开始按照实现定义好的映射关系生成Excel文件了,生成Excel文件需要相应的Excel.dll 。在数据导入的时候也需要根据声称的XML文件来定位数据。