1、第三章 模板编辑器的使用 121. 打印模板编辑器 122. 单元格数据格式 133. 单元格内容的折行 154. 在模板中使用图片 175. 打印图章(公章) 216. 页面设置 237. 页码设置 298. 单元格变量的连接 349. 功能节点模板的管理 34第四章 模式化应用 361. 普通分页场景 362. 强制分页场景 393. 凭证分页场景 464. 工资条分页场景 495. 卡片分页场景 526. 动态列的应用 547. 批量打印应用 578. Excel导出 598.1 Excel导出功能的调用方式 598.2 Excel导出设置 609. 打印设置 61第五章 公式的应用 6
2、61. 本页小计(_subtotal_)公式 662. 合计(_total_)公式 683. 红字(_redword_)公式 694. 其它非常用的打印特有公式 704.1 行号(_rowno_公式) 704.2 行数(_rowcount_)公式 704.3 金额空格(_space_)公式 704.4 中文金额空格(_cnspace_)公式 704.5 日期空格(_datespace_)公式 704.6 中文日期空格(_datecnspace_)公式 704.7 变量扩展(_expandvar_)公式 704.8 打印公式与NC系统公式的嵌套使用 715. 修改显示格式的公式 715.1 单元
3、格内容对齐方式 715.2 单元格背景色(_bgcolor_)公式 725.3 字体颜色(_fontcolor_)公式 725.4 字体(_fontfamily_)公式 725.5 字体大小(_fontsize_)公式 725.6 字体风格(_fontstyle_)公式 725.7 文字下划线(_fontunderline_)公式 725.8 条件格式 735.9 组合格式 735.10 在格式公式中使用null 736. 公式的综合使用 74第六章 基于NC打印的二次开发 771. UI工厂:快速有效地实现打印 772. 一个二次开发范例 803. 打印监听器 82第七章 常见问题解答 83
4、1. 出现打印问题,如何迅速地定位问题 832. 本页小计公式每页都显示相同的值,为什么? 853. Excel导出时,是否还会发生内存溢出现象?导出效率如何?4. 如何进行双面打印 865. 批量打印是否可预览?打印时是否可选择页码范围 866. 如何模拟测试打印的效果 87第八章 V5打印模块新特性 88第一章 前言1. 总体介绍假设有一张凭证需要打印出来,打印效果如下,应如何实现?如果把打印机想象成一张白板的话,打印,就是在白板上做绘制。上面的这张凭证,可以很容易地绘制出来。但是,当客户想要调整“收款凭证”这四个字的位置,改变它的字体,或是在下面的表格中增加金额列,是否必须修改打印程序?
5、另外每张凭证的摘要数据、会计科目数据都是不一样的,如何用统一的打印程序将不同的数据打印出来?解决这个问题需要做到:1)可以配置字体、颜色、文本的打印位置、表格的行列等等,这满足了客户对于显示的个性化要求,2)在配置的时候,能把数据进行某种抽象,起到象征作用。实际打印时,抽象化的数据被赋予真实的值。NC系统的打印模板,就是采用这种思路设计出来的。上面的这张凭证的打印模板如下图:可以看到,打印模板是一个表格,其基本元素是单元格。对于单元格,可以定义字体、颜色、边框、文本对齐方式;对于行,可以定义行高、插入行、删除行;对于列,可以定义列宽、插入列、删除列。这些功能使得凭证的外观可方便灵活地配置。那如
6、何进行数据的抽象呢?我们需要看看打印模板编辑器的全貌:上面打印模板编辑器的右侧,有一个列表,列出了“凭证类别名称”、“制单日期”、“摘要”等在左侧表格以粉色背景出现的内容,这个列表里面的值,就是对数据的抽象,被称为数据源变量。因此,模板信息,既包括了显示的样式,又包括了数据的抽象。它足以适应个性化的显示和动态的数据。最后一个问题是,如何赋真实的值给变量。上面的“凭证类别名称”、“摘要”等变量的真实的值来自于要打印的凭证,因此需要把要打印的凭证的指定信息取出来赋予给打印变量,实现这个过程,应该采用了下面的流程:左边的凭证代表财务中的凭证对象,它包含了真正的业务信息,中间的数据源是打印的标准取数接
7、口。开发人员应从凭证中取得打印模板要使用的变量的数据,放到数据源里,打印模板从数据源接口取得变量的真实的值,填充到模板中。2. 快速入门第一节利用一个实际的例子,介绍了NC打印的设计思路,这一节,将继续结合上面的实例,对设计思路做更加深入的讲解,帮助读者快速入门。完成实例中凭证的打印,分了两个步骤:第一步是将最终的效果抽象成一个模型,在打印模板中定义出来,第二步是创建数据源,通过该数据源能取到打印模板引用的变量的值。第一步工作由开发人员或实施顾问完成,第二步工作由开发人员完成。开发人员如何创建数据源?打印模板提供了IDataSource接口,该接口的方法如下:package nc.ui.pub
8、.print;public interface IDataSource / 返回数据源中所有的变量表达式public java.lang.String getAllDataItemExpress(); / 返回数据源中所有的变量名public java.lang.String getAllDataItemNames (); / 根据变量的表达式,取得变量的真实的值public java.lang.String getItemValuesByExpress (String itemExpress); / 如果某变量的值都是数字型的,返回truepublic boolean isNumber (S
9、tring itemExpress); / 取的节点编号,推荐不实现public java.lang.String getModuleName (); / 取得变量依赖的其他变量,推荐不实现public java.lang.String getDependentItemExpressByExpress (针对实例中的数据,可以简单地创建一个模拟的数据源(简单起见,未列出所有变量,只是示范性地实现凭证类别名称、制单日期、摘要、借方本币四个变量),比如:public class MyTestDataSource implements IDataSource public java.lang.Str
10、ing getAllDataItemExpress() return new String“vouchertypename”,”dbilldate”,”summary”,” debitmny”;public java.lang.String getAllDataItemNames ()“凭证类别名称”,”制单日期”,”摘要”,”借方本币”String itemExpress) if(itemExpress.equals(“vouchertypename”) return new String“收款凭证”; else if(itemExpress.equals(“dbilldate”) retu
11、rn new String“2005-12-10”; else if(itemExpress.equals(“summary”) return new String “收款,客户1”, “收款,客户2”, “收款,客户3”,“收款,客户4”, “收款,客户5” else if(itemExpress.equals(“debitmny”) return new String“”,”,”,”,”1000”; return null;public boolean isNumber (String itemExpress) / 借方本币是数字 if(itemExpress.equals(“debitm
12、ny”) return true; return false; / 取的节点编号,可不实现public java.lang.String getModuleName ()有了打印模板,有了数据源,打印工作的所有准备活动都已完毕,只差一点调用打印程序,完成打印。NC打印程序的统一入口类是nc.ui.pub.print.PrintEntry,下面介绍如何调用PrintEntry。 PrintEntry pe = new PrintEntry(当前窗口对象,new MyTestDataSource(); / 设置打印模板ID的查询条件pe.setTemplateID(公司,节点编号,用户,业务类型)
13、;/ 如果分配了多个打印模板,可选择一个模板 pe.selectTemplate(); / 开始打印 pe.print(); / 也可以先预览,再在预览界面打印 / pe.preview(); 至此,整个工作才全部结束。不过,客户对打印的要求,并不像上例中这么简单,比如:观察实例的模板,可以看到不同的行具有不同的背景颜色,其中只有第5行是白色背景,其他都是藏青色背景。而通过预览效果可以看到,第5行被动态向下扩展了(扩展行的行高列宽及单元格式都克隆了模板中的相应单元格),而其他行却没有扩展。为什么会这样?假设模板中第5行的变量有100个值,如果都要扩展的话,一页能打下吗,要是打不下,该如何分页,能否定义不同的分页方式?除了通过数据源取数,还有什么取数方式,可否定义公式对数据源运算?要对一批凭证做批量打印,该怎么做?如果要把凭证输出到Excel中,该怎么做?有特殊的页码要求,该怎么配置?要把内容打印到特殊的纸张上,怎么定义纸型? 要解答这些问题,需要对打印模板有更深入的了解。后面的内容,致力于以实例讲透各种高级功能。下一节,将对N
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1