1.一种工资条打印方法,所述方法包括:
配置工资条的表头和表尾变量,生成工资账表表格的列信息;
配置打印基础信息;
根据工资账表表格的列信息自动生成工资条模板;
获取工资账表数据,拼装所述工资账表数据的表头和表尾变量,填充至工资条模板,完成工资条的打印。
2.根据权利要求1所述的方法,其特征在于,所述配置工资条的表头和表尾变量的方法包括:
所述表头变量项和表尾变量项通过表格方式配置,所述表格数据为工资账表表格所有列的列信息;
所述表格的列包括字段名称列、显示列以及换行列;
所述字段名称列用于设置列信息的字段名称;显示列用于确定显示的字段;所述换行列用于确定字段是否换行。
3.根据权利要求1所述的方法,其特征在于:
所述打印基础信息包括纸张信息、打印方向以及页边距;
所述纸张信息包括a3、a4、b5以及自定义打印纸张类型;
所述打印方向包括横向以及纵向;
所述页边距包括上方、下方、左侧以及右侧的页边距。
4.根据权利要求1所述的方法,其特征在于,所述根据工资账表表格的列信息自动生成工资条模板的方法包括:
获取所述列信息中的表头信息;
根据所述表头信息计算工资条打印内容宽度;
计算所述工资账表表格每一行显示的字段,将所述字段放入行对象数组;
计算所述工资账表表格的每列宽度,将所述每列宽度放入列宽数组;
获取预设的工资条模板,根据所述行对象数组、列宽数组以及预设的工资条模板生成所述工资条模板的表格内容;
设置字段列合并;
设置数据源信息和区块填数函数,生成工资条模板。
5.根据权利要求4所述的方法,其特征在于,所述计算工资条打印内容宽度的方法包括:
判断是否配置打印基础信息,如果未配置打印基础信息,设置所述工资条打印内容宽度为预设宽度;
如果配置打印基础信息,提取纸张类型参数,根据所述纸张类型参数设置纸张的宽度和高度;
提取打印方向参数,若所述打印方向参数为横向打印,将所述纸张高度作为打印纸张的宽度,若所述打印方向参数为纵向打印,所述纸张宽度度即为打印纸张的宽度;
提取左侧页边距参数和右侧页边距参数,将所述打印纸张宽度减去所述左侧页边距参数和右侧页边距参数得到所述工资条打印内容宽度。
6.根据权利要求4所述的方法,其特征在于,所述计算所述工资账表表格每一行显示的字段方法包括:
创建行对象以及行对象数组,所述行对象用于以行为单位存放字段对象,所述行对象数组用于存放所有字段对象;
循环所述工资账表表格的所有字段,判断是否将当前字段放入行对象中;
若将当前字段放入行对象中,判断所述当前字段是否为最后一列;
若所述当前字段为最后一列,设置所述当前字段宽度为所述工资条打印内容宽度减去当前行对象已存字段宽度之和;
设置当前字段结束位置为所述工资条打印内容宽度,将所述当前字段添加至行对象。
7.根据权利要求6所述的方法,其特征在于:
若所述当前字段不是最后一列,设置所述当前字段的结束位置为当前行对象已存字段宽度之和加上所述当前字段的宽度,将所述当前字段添加至行对象。
8.根据权利要求6所述的方法,其特征在于:
若不能将当前字段放入行对象中,判断当前行对象是否为空;
若所述行对象为空,设置所述当前字段宽度以及当前字段结束位置为所述工资条打印内容宽度;
将所述当前字段添加至行对象;
将所述行对象添加至行对象数组,创建一个新的行对象。
9.根据权利要求8所述的方法,其特征在于:
若所述行对象不为空,提取当前行对象的最后一个字段,设置当前字段宽度为所述工资条打印内容宽度减去除最后一个字段以外当前行对象已存字段宽度之和;
判断当前字段宽度是否大于所述工资条打印内容宽度;
若当前字段宽度大于所述工资条打印内容宽度,设置当前字段宽度和结束位置为所述工资条打印内容宽度,将所述当前字段添加至行对象,将所述行对象添加至行对象数组,创建一个新的行对象数组;
否则,直接添加当前字段至行对象。
10.根据权利要求6所述的方法,其特征在于,所述判断是否将当前字段放入行对象中的方法包括:
若当前行对象为空,将当前字段放入行对象;
若当前行对象不为空,将当前行对象已存字段宽度之和加上当前字段宽度得到宽度和,若所述宽度和大于工资条打印内容宽度,当前字段不放入行对象,否则将当前字段放入行对象中。
11.根据权利要求4所述的方法,其特征在于,所述计算所述工资账表表格每列宽度的方法包括:
将所述工资账表表格所有字段总数,减去所述行对象数组长度,得到循环次数;
按循环次数依次循环所述工资账表表格获取每列宽度,将所述每列宽度添加至列宽数组。
12.根据权利要求11所述的方法,其特征在于:
每次循环中,遍历所述行对象数组,获取每行第一个未确认字段,将所述未确认字段放入预创建的第一数组中;
遍历完成行对象数组后,判断所述第一数组是否为空,若所述第一数组为空,退出当次循环;
若所述第一数组不为空,遍历所述第一数组,提取第一数组中字段结束位置值最小的字段,设置所述字段为确认后字段,将所述字段结束位置最小值减去当前行对象所有列宽度之和,得到新列宽;
若所述新列宽不等于0,将所述新列宽放入列宽数组中。
13.根据权利要求12所述的方法,其特征在于:
若当前循环列为最后一列,将工资条打印内容宽度减去当前行对象其余所有列宽度之和作为最后一列宽度;
若所述最后一列宽度不等于0,将所述最后一列宽度放入列宽数组中。
14.根据权利要求4所述的方法,其特征在于,所述根据所述行对象数组、列宽数组以及预设的工资条模板生成所述工资条模板的表格内容的方法包括:
所述预设的工资条模板为默认的工资条模板,包含基本的模板信息;
所述预设的工资条模板为xml格式,将所述xml格式转换成文档对象;
选择所述文档对象的表节点对象;
循环所述列宽数组,在所述表节点对象中添加列对象,设置列宽度;
生成标题和表头信息,获取标题和表头行数;
循环所述行对象数组,根据所述标题和表头信息生成标题行和数据行;
生成表尾信息;
设置倒数第二行格式以及最后一行格式,处理尾部的分隔线显示,生成工资条模板。
15.根据权利要求14所述的方法,其特征在于,所述生成标题和表头信息以及获取标题和表头行数的方法包括:
获取标题信息,若所述标题信息为空则不添加标题行;
若所述标题信息为非空,则在表节点对象中添加一行用于标题行的显示;
获取配置的表头变量项,判断所述表头变量项是否有待显示字段,若没有则不添加表头信息行,否则根据换行信息判断行数。
16.根据权利要求15所述的方法,其特征在于,所述生成生成标题行的方法包括:
根据获取的标题行以及表头信息行的行数,设置工资条表格从所述标题行及表头信息行的下一行开始;
循环所述行对象数组,每次取出一个行对象,循环行对象中的字段对象,取出当前字段的前一个字段的结束位置,根据所述列宽数组,计算前一个字段结束位置所在列的位置,将其加1作为当前字段开始列的序号;
根据字段的标题设置标题文字,得到标题行;
根据字段的数据设置数据文字,设置取数公式,得到数据行。
17.根据权利要求4所述的方法,其特征在于,所述设置字段列合并的方法包括:
设置标题行和表头信息行的列合并;
循环行对象数组,对每一个行对象循环当前行对象的所有字段;
根据列宽数组,计算当前字段结束列的位置;
设置合并列的开始和结束位置;
设置表尾的列合并。