SSM杰信商务平台项目day06

第六天 复杂制式表单打印~购销合同

1.购销合同报表分析,读程

1)购销合同是否可以利用模板来开发。

POI区域拷贝,网上有类似行拷贝。不支持特殊元素的拷贝。货物信息在变化,有可能两个,有可能一个,一个时货物下面的信息位置都被提上来。
如果非要用模板实现,改造,把每页作为一个sheet的内容。POIsheet拷贝。一个货物的做一个模板,两个货物的做一个模板。或者利用程序判断,一个或者两个货物。

2)图片如何插入到excel

HSSFPatriarch patriarch = sheet.createDrawingPatriarch();       //add picture
poiUtil.setPicture(wb, patriarch, path+"make/xlsprint/logo.jpg", 开始行, 开始列, 结束行, 结束列);

3)如何画线

poiUtil.setLine(wb, patriarch, 开始行, 开始列, 结束行, 结束列); //draw line

4)如何设置单元格换行

curStyle.setWrapText(true); // 换行

5)如何设置单元格的前缀

public short rmb4Format(HSSFWorkbook wb) {
        HSSFDataFormat format = wb.createDataFormat();
        return format.getFormat("\"¥\"#,###,##0.00"); // 设置格式
    }

6)如何建立公式

nCell.setCellType(HSSFCell.CELL_TYPE_FORMULA);
nCell.setCellFormula("F"+String.valueOf(curRow)+"*H"+String.valueOf(curRow));

7)验货员不能由于输入审单人,它的位置不能发生变化

utilFuns.fixSpaceStr(contract.getCheckBy(),26)

8)行自适应内容的高度

float height = poiUtil.getCellAutoHeight(printMap.get("Request"), 12f);     //自动高度

9)分页符

if(p>0){
    sheet.setRowBreak(curRow++);    //在第startRow行设置分页符
}

10)数据和业务分离。单独组织数据源,打印时只关系它从哪一页获取数据?

Map<String,String> pageMap = null;
List<Map> pageList = new ArrayList();           //打印页

Map pageMap 存储每页数据,打印时就无需关心数据从哪个对象中来,直接从它的pageMap拿,只需要按业务的key来获取。获取数据变的简单。打印代码和获取数据就不用交叉,代码结构更清晰,维护人更方便读程。
pageList存放所有页,每条记录就是一页,一页数据都放在pageMap中。

11)日期格式转换,转为中文格式

UtilFuns.formatDateTimeCN(UtilFuns.dateTimeFormat(contract.getSigningDate())));

12)合并单元格,如果有边线

操作的样式只设置了第一个单元格。手工设置其它的单元格,补上线。

2.重点知识回顾

复杂报表的打印

开发步骤:

1)读程

a)通读人家的程序代码
b)浏览人家写的注释
c)自己一行一行的写注释
d)重点放在特殊功能,插入图片,插入线,if,for
e)运行起来,跟踪断点
f)改造

2)打印

复杂报表打印开发步骤:
a)POI先实现业务,可以先不修饰
b)边写代码边写样式,立刻看到打印结果(熟练)

课程视频内容

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值