最近项目中维护升级,新增加了个列表展示的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);Cell cell = new Cell();cell.setWidth(new Width(TableWidthUnit.POINT, tableNewWidth[0] + tableNewWidth[1]));cell.setVerticalAlignment(VerticalAlignmentType.CENTER);cell.setGridSpan(2);cell.add(paragraph);row.add(cell);} else {if (j - count - 1 < centerWoodInfoList.size()) {Run run2 = new Run(centerWoodWordEntity.getDataList().get(i).get(j - count - 1));run2.setStyleName("tabtextname_min");run2.setTextScale(78);Paragraph paragraph2 = new Paragraph();paragraph2.setHorizontalTextAlignment(HorizontalAlignmentType.CENTER);paragraph2.add(run2);Cell cell2 = new Cell();cell2.setWidth(new Width(TableWidthUnit.POINT, tableNewWidth[2]));cell2.setVerticalAlignment(VerticalAlignmentType.CENTER);cell2.add(paragraph2);row.add(cell2);} else {Run run2 = new Run();run2.setStyleName("tabtextname_min");run2.setTextScale(78);Paragraph paragraph2 = new Paragraph();paragraph2.setHorizontalTextAlignment(HorizontalAlignmentType.CENTER);paragraph2.add(run2);Cell cell2 = new Cell();cell2.setWidth(new Width(TableWidthUnit.POINT, tableNewWidth[2]));cell2.setVerticalAlignment(VerticalAlignmentType.CENTER);cell2.add(paragraph2);row.add(cell2);}}}table.add(row);}//循环中央段的行VerticallyMergedCell verticallyMergedCell = new VerticallyMergedCell(MergeCellType.RESTART);for (int i = 0; i < maxWidth; i++) {Row row = new Row();row.setHeight(new RowHeight(HeightRule.NONE, mRowHeight));
    //                for (int j = 0; j < maxTableWidth; j++) {//横向最大值for (int j = count * 6; j < count * 6 + 6; j++) {//横向最大值if (j == count * 6) {Run run = new Run(header[3]);run.setStyleName("tabtextname_min");run.setTextScale(78);Paragraph paragraph = new Paragraph();paragraph.setHorizontalTextAlignment(HorizontalAlignmentType.CENTER);paragraph.add(run);Cell cell = new Cell();cell.setWidth(new Width(TableWidthUnit.POINT, tableNewWidth[0]));cell.setVerticalAlignment(VerticalAlignmentType.CENTER);if (i == 0) {cell.setVerticallyMergedCell(verticallyMergedCell);} else {cell.setVerticallyMergedCell(new VerticallyMergedCell());}cell.add(paragraph);row.add(cell);} else if (j == count * 6 + 1) {Run run1 = new Run(titles2.get(i + 3));run1.setStyleName("tabtextname_min");run1.setTextScale(78);Paragraph paragraph1 = new Paragraph();paragraph1.setHorizontalTextAlignment(HorizontalAlignmentType.CENTER);paragraph1.add(run1);Cell cell1 = new Cell();cell1.setWidth(new Width(TableWidthUnit.POINT, tableNewWidth[1]));cell1.setVerticalAlignment(VerticalAlignmentType.CENTER);
    //                            cell1.setVerticallyMergedCell(new VerticallyMergedCell());cell1.add(paragraph1);row.add(cell1);} else {if (j - (count + 1) * 2 < centerWoodInfoList.size()) {Run run2 = new Run(centerWoodWordEntity.getZydmj().get("" + i).get(j - (count + 1) * 2));run2.setStyleName("tabtextname_min");run2.setTextScale(78);Paragraph paragraph2 = new Paragraph();paragraph2.setHorizontalTextAlignment(HorizontalAlignmentType.CENTER);paragraph2.add(run2);Cell cell2 = new Cell();cell2.setWidth(new Width(TableWidthUnit.POINT, tableNewWidth[2]));cell2.setVerticalAlignment(VerticalAlignmentType.CENTER);cell2.add(paragraph2);row.add(cell2);} else {Run run2 = new Run();run2.setStyleName("tabtextname_min");run2.setTextScale(78);Paragraph paragraph2 = new Paragraph();paragraph2.setHorizontalTextAlignment(HorizontalAlignmentType.CENTER);paragraph2.add(run2);Cell cell2 = new Cell();cell2.setWidth(new Width(TableWidthUnit.POINT, tableNewWidth[2]));cell2.setVerticalAlignment(VerticalAlignmentType.CENTER);cell2.add(paragraph2);row.add(cell2);}}}table.add(row);}//后面表格 分段长度-材积for (int i = 0; i < 6; 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[3 + 1 + i]);run.setStyleName("tabtextname_min");run.setTextScale(78);Paragraph paragraph = new Paragraph();paragraph.setHorizontalTextAlignment(HorizontalAlignmentType.CENTER);paragraph.add(run);Cell cell = new Cell();cell.setWidth(new Width(TableWidthUnit.POINT, tableNewWidth[0] + tableNewWidth[1]));cell.setVerticalAlignment(VerticalAlignmentType.CENTER);cell.setGridSpan(2);cell.add(paragraph);row.add(cell);} else {if (j - count - 1 < centerWoodInfoList.size()) {Run run2 = new Run(centerWoodWordEntity.getDataList().get(3 + i).get(j - count - 1));run2.setStyleName("tabtextname_min");run2.setTextScale(78);Paragraph paragraph2 = new Paragraph();paragraph2.setHorizontalTextAlignment(HorizontalAlignmentType.CENTER);paragraph2.add(run2);Cell cell2 = new Cell();cell2.setWidth(new Width(TableWidthUnit.POINT, tableNewWidth[2]));cell2.setVerticalAlignment(VerticalAlignmentType.CENTER);cell2.add(paragraph2);row.add(cell2);} else {Run run2 = new Run();run2.setStyleName("tabtextname_min");run2.setTextScale(78);Paragraph paragraph2 = new Paragraph();paragraph2.setHorizontalTextAlignment(HorizontalAlignmentType.CENTER);paragraph2.add(run2);Cell cell2 = new Cell();cell2.setWidth(new Width(TableWidthUnit.POINT, tableNewWidth[2]));cell2.setVerticalAlignment(VerticalAlignmentType.CENTER);cell2.add(paragraph2);row.add(cell2);}}}table.add(row);}TableGrid tableGrid = new TableGrid();for (int i = 0; i < maxTableWidth; i++) {switch (i) {case 0:tableGrid.getColumns().add(new TableGridColumn(tableNewWidth[0]));break;case 1:tableGrid.getColumns().add(new TableGridColumn(tableNewWidth[1]));break;default:tableGrid.getColumns().add(new TableGridColumn(tableNewWidth[2]));break;}}table.setGrid(tableGrid);doc.getBody().add(table);for (int i = 0; i < 5; i++) {Paragraph paragraph = getParagraphBoth();Run runN = new Run();runN.setStyleName("biluname");runN.addText(" ");paragraph.add(runN);doc.getBody().add(paragraph);}}}

Android JWord生成复杂表格(单元格合并)相关推荐

  1. elementUI——表格单元格合并——技能提升

    elementUI--表格单元格合并--技能提升 之前写过一个关于单元格合并的功能,要求根据某一个参数比如序号,如果同一个序号下的某些参数前后的数据一致,则需要实现单元格的合并. 效果图如下: 还有一 ...

  2. Layui table表格单元格合并问题

    Layui table表格单元格合并 人丑话不多, 直接上方法: /*** * @param fieldName 要合并列的field属性值* @param index 表格的索引值 从1开始* @d ...

  3. java word导出表格_Java Word模板导出包含表格单元格合并

    java通过freemarker导出word循环合并表格单元格 本文主要讲解通过freemarker模板引擎来导出word,并且在word中包含表格的合并部分需要循环生成. 一.Java需要通过模板导 ...

  4. 计算机表格单元格合并,excel表格数据拆分和合并单元格-excel中如何将已经合并的单元格拆分,并将该单元格......

    Excel怎么把一个合并单元格的内容拆分为几个单元格... 要直接位置得到,则有俩种可能性 第一种,合元格是格得来的假合并单元格,单元格都有内容,直接解除合并即可 第二种,若确实是真实合并单元格,则需 ...

  5. Layui之表格单元格合并

    前言 layui是一个不错的后台UI框架,最近一直在学习.但是它原来的表格不支持单元格合并.比如项目这一列,有相同的行,我们就需要合并一下. 就像是这样: 一.实现 我们需要在表格实例化之后再对其样式 ...

  6. HTML——表格单元格合并

    <!DOCTYPE html> <html><head><meta charset="utf-8"><title>表格单 ...

  7. vue复杂表格单元格合并 根据数据动态合并

    我们在开发中最常见的就是表格,而往往有一些复杂表格都不大好实现,对于合并单元格不是固定的,而是需要根据数据是否相同去动态设置合并的表格,本文把方法分享给大家,可以根据数据动态生成合并单元格,无论导出需 ...

  8. 基于layui中table组件的数据表格单元格合并

    layui.use(['table'], function () {var $ = layui.$, table = layui.table;var mergeColumns=['province', ...

  9. vue项目element-ui的table表格单元格合并

    一.合并效果 二全部代码 <template><div class="table-wrap"><el-table:data="tableDa ...

  10. word中将表格单元格合并后,如何让文字上下也处于居中的位置

    如图所示,表格第一行的"类别2"到"类别5"这些文字处于顶部,如果想要这些文字像类别1一样垂直居中,可以通过如下方式进行调整: 1.选中需要调整的单元格,右键单 ...

最新文章

  1. 明明程序员很累,为什么还有这么多人想入行?
  2. 接口与object的关系
  3. Forms Authentication timeout and Expiration
  4. android 是否允许打印debug级别日志的开关_Android学习——日志使用
  5. python对话框机制_Chromium 新的弹窗机制以及 HTML 的 dialog 元素
  6. java练气期(1)----java高级(JDBC)
  7. _Linux实操-实用指令
  8. Java入门1.2.3—一个老鸟的Java学习心得
  9. 取得二进制最右面为1的数
  10. 矿井水质在线监测系统
  11. 用WPF开发仿QQ概念版之--------Loading预加载界面(闪屏窗体)
  12. 数乌龟(母牛,兔子....)[打表法]
  13. PHP Mysql-创建数据库
  14. java+控制台-学生选课管理系统
  15. 树莓派PI2编译天猫魔盘驱动,附编译好ko文件
  16. 河南增值税开票系统原服务器地址,河南省增值税发票综合服务平台登录入口:https://fpdk.henan.chinatax.gov.cn...
  17. HBase master,slaver web端口配置
  18. English trip -- Phonics 1 ar
  19. platform驱动模型使用总结
  20. 如何像说话一样去写作 -- Ray Dalio

热门文章

  1. JavaScript正则表达式的学习
  2. 交接处挂网_关于本工程基层不同种材料交接处挂网范围确认事宜
  3. C语言C++图形库---贪吃蛇大作战【附源码】
  4. OpenCV-4.3.0 Windows版本下载
  5. 旗正规则引擎在薪资管理方面的应用
  6. “1万起投,年化达8%”?天安金交中心卖力“吆喝”的产品,是“香”还是“坑”?
  7. SpringBoot开发详解(三)--SpringBoot配置文件YML注意事项
  8. 淘口令高级版api,淘口令转化api,淘口令api,高级淘口令效果,高级淘口令使用场景
  9. 【自学小梅哥fpga】04 闪烁led
  10. ThingJS官方案例(四):快速应用3D场景下的模拟导航能力