最近项目中维护升级,新增加了个列表展示的CRUD功能,简单给大家描述下:木材的砍伐来计算不同树种的材积值(也就是总体积)进行数据展示。
大体是这样的表格显示(还有几个更简单的表格不在此列出),其中中间g1-gn是根据添加页面设置的组别数进行动态显示的,如果当前有8组中央段面积,那么就是g1-g8,如果有两组数据(这里是数据2组,不是中央段面积2组)其中一条数据的中央段面积有2组,另一条有6组,那么这里就会显示G1-G8,而第一组数据只会在G1,G2时候有值,其他为空内容。
简单介绍了下需求,好了真正的需求来了,要求导出这个表格到word,并使用Jword。起初我我是以这个设计图的设计表格导出的,在写这个表格前,我再三跟产品经理确认是否要这样做,告诉了他这样会导致g1-gn如果很多就会换行或者不显示的问题(前提是A4纸张大小边距固定参数,字体大小都是固定好的大小),没办法比较人家是爷,人家说就这么做。呵呵,做好后给他看他却说这样还是不好看要我竖着放,没办法,又从新改了。
我先给大家看下成品效果 (第一张是三条数据的,第二三张是6条数据的)
- 不废话了直接上代码
-
private void setCenterTable(int maxTableWidth, String[] header, int[] tableNewWidth, CenterWoodWordEntity centerWoodWordEntity, int maxWidth, List<String> titles2, int count) { { //先设置前三行 格式固定 Table table = new Table(StandardBorderStyle.SINGLE_LINE); table.setAlignment(HorizontalAlignmentType.CENTER); int fristIndex = count * 5; for (int i = 0; i < 3; i++) {//前三行 Row row = new Row(); row.setHeight(new RowHeight(HeightRule.NONE, mRowHeight)); // for (int j = 0; j < maxTableWidth - 1; j++) {//横向最大值 for (int j = count * 5; j < count * 5 + 5; j++) {//横向最大值 if (j == fristIndex) { Run run = new Run(header[i]); run.setStyleName("tabtextname_min"); run.setTextScale(78); Paragraph paragraph = new Paragraph(); paragraph.setHorizontalTextAlignment(HorizontalAlignmentType.CENTER); paragraph.add(run);