lowagie.text 导出word表格带复杂表头的内容

使用lowagie.text 导出word表格带多表头的时候怎么处理呢?

其实蛮简单的,知道rowspan和colspan是什么意思就好操作了。 同理设置表格标题的时候也是一样。

引入itext

<groupId>com.lowagie</groupId><artifactId>itext</artifactId><version>2.0.8</version>
</dependency>

代码:

import com.lowagie.text.*;
import com.lowagie.text.Font;
import com.lowagie.text.rtf.RtfWriter2;
import java.awt.*;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;public class ItextTableMulHeader {/*** colspan 合并列*  rowspan 合并行*/public static void main(String[] args) throws Exception {OutputStream out = new FileOutputStream("d://exportFile//table" + System.currentTimeMillis() + ".doc");Document document = new Document(PageSize.A4);RtfWriter2.getInstance(document, out);document.open();addTable(document);document.close();System.out.println("ok");}private static void addTable(Document document) throws DocumentException {Color lightGray = new Color(232, 232, 232);com.lowagie.text.Font fontChinese = new com.lowagie.text.Font(null, 12, com.lowagie.text.Font.BOLD,Color.black);com.lowagie.text.Font titleChinese = new com.lowagie.text.Font(null, 17, com.lowagie.text.Font.BOLD,Color.black);String[] headFirst = {"1"};String[] headSec = {"11","22"};String[] headThird = {"111","222","333","444"};String[] headFour = {"1111","2222","3333","4444","5555","6666","7777","8888"};int maxSize = headFour.length;Table table = new Table(maxSize);int widths = 100 / maxSize;int widths1[] = setWordWith(maxSize, widths);// 设置每列宽度比例table.setWidths(widths1);table.setWidth(100);// 占页面宽度比例table.setAlignment(Element.ALIGN_CENTER);//居中table.setAlignment(Element.ALIGN_MIDDLE);//垂直居中table.setAutoFillEmptyCells(true);//自动填满table.setBorderWidth(1);//边框宽度table.setPadding(8);// 设置表格表题Paragraph p = new Paragraph("多表头表格", titleChinese);p.setSpacingAfter(8);p.setSpacingBefore(8);Cell cell = new Cell(p);cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setBorder(0);cell.setColspan(maxSize); // 合并列,单独成一行table.addCell(cell);// 设置表头setTableHeader(table,maxSize/headFirst.length, headFirst, fontChinese, lightGray);setTableHeader(table,maxSize/headSec.length, headSec, fontChinese, lightGray);setTableHeader(table,maxSize/headThird.length, headThird, fontChinese, lightGray);setTableHeader(table,maxSize/headFour.length, headFour, fontChinese, lightGray);List<List<Integer>> content = getRandom(5, maxSize);for (List<Integer> row : content) {for (Integer column : row) {cell = new Cell(new Paragraph(column.toString(), fontChinese));cell.setHorizontalAlignment(Element.ALIGN_LEFT);table.addCell(cell);}}document.add(table);}private static void setTableHeader(Table table, int colspan, String[] headAttr, Font fontChinese,  Color lightGray) throws BadElementException {Cell cell;for (String column : headAttr) {cell = new Cell(new Paragraph(column, fontChinese));cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setBackgroundColor(lightGray);cell.setColspan(colspan);table.addCell(cell);}}private static List<List<Integer>> getRandom(int rowNum, int columnNum){List<List<Integer>>  allList = new ArrayList<>(rowNum);List<Integer> innerList;int num;for (int i = 0; i < rowNum; i++){innerList = new ArrayList<>(columnNum);for (int j = 0; j < columnNum; j++){num = (int) (Math.random() * 9999);innerList.add(num);}allList.add(innerList);}return allList;}private static int[] setWordWith(int size, int with) {int[] intWidth = new int[size];for (int i = 0; i < size; i++) {intWidth[i] = with;}return intWidth;}
}

表格标题,设置的时候,边框设置为0,单独占一行,如果不占一行会发生什么呢?

表头一行一行根据实际的进行设置。

结果:

文件夹要先建好,然后打开对应的文件查看

总结:

使用lowagie.text导出word表格带复杂表头的时候,主要是要了解rowspan和colpan,即合并行和合并列,再根据实际的合并进行。不清楚的时候,网上也找不到例子的时候,可以模拟例子各种属性多试试看看什么含义。

lowagie.text 表格带复杂表头 导出word相关推荐

  1. poi导出word文件(带表格)

    poi导出word文件(带表格) 一.背景介绍 现有业务需求根据前端页面上所选的时间和列,来生成word表格,方便打印. 二.POM <dependency><groupId> ...

  2. word怎么在下一页添加表头_word表格在换页时能否自动在新换页上带上表头,如何设置...

    展开全部 word表格在换页时能自动在新e69da5e887aa3231313335323631343130323136353331333431353262换页上带上表头,具体操作请参照以下步骤: 1 ...

  3. poi-tl,根据word模板导出word(表格行循环,表格无表头的情况)

    最近项目里要做一个根据客户提供的word模板导出word的功能,方法有很多,比如easyPoi(对word的支持并不是很好),freeMark(太麻烦不想研究),以及poi-tl, 最后研究了半天发现 ...

  4. java IText 导出word表格

    之前写的导出表格都是导出成Excel,但是接到的项目新需求要求导出成横表类型的Word文本,据了解,POI对word的导出支持略低,之前用的是自己设置本地模板,然后读取到模板后进行数值的获取补充,但是 ...

  5. Struts2利用iText导出word文档(包含表格)

    struts.xml里的配置如下: <!-- 保存为word文件 --><action name="studentCurriculumWord" class=&q ...

  6. 利用itext导出word表格,处理图片

    在实际的项目开发中我们需要将后台大量数据导出为word或者是excel方便用户操作,当然能完成这一功能的有freemarker,itext,poi等技术,本文讲述以itext导出word. 首先我们需 ...

  7. poi导出word时内嵌表格场景,即开即用

    poi导出word内嵌表格 设计分析部分 后端代码部分 xml文件配置 实体类 controller层 使用到的工具类 service层 前端代码部分 测试页面 设计分析部分 首先要对导出word的需 ...

  8. poi设置word表格单元格宽度_poi导出word表格的操作讲解

    一.效果如下 二.js代码 function export_word(){ //导出word var url = "czzsca/exportWord.do"; this.expo ...

  9. PowerDesiger 15逆向生成工程E-R图及导出word表格

    应用环境:win8(64位)+oracle10g(32位)服务端+PowerDesigner15 需求:oracle数据库中的表结构是web工程框架hibernate 自动生成,现需要将数据库中已有的 ...

  10. 利用docx4j完美导出word文档(标签替换、插入图片、生成表格)

    最近公司让我实现一个利用原有word模板,导出word文档的功能模块,发现docx4j是个很不错的工具,但是之前从来没有用过,对此并不了解,于是上网查找相关资料,也是非常少之,于是便自己开始摸索. 1 ...

最新文章

  1. python中的diff_python-Numpy和diff()
  2. CSP认证201809-1 卖菜[C++题解]:遍历
  3. stm32 adc过采样_产生ADC误差的外部原因有哪些?
  4. 计算机c语言期末答案,大学计算机C语言期末考试试题A.doc
  5. Liferay教程– Liferay门户Portlet教程
  6. linux系统下find命令的使用
  7. 基于Fuzzy Logic的人群疏散模型(考虑攻击者的情况)
  8. python爬取网课答案_高校邦网络数据采集与Python爬虫【带实验】网课答案
  9. C语言中runtime错误,runtime error错误解决方案 打开软件出现runtime error
  10. 1.2 逻辑电路基础
  11. 前端性能优化工具waterfall
  12. ':app:clean'. Unable to delete directory:app\build\intermediates
  13. 轴承剥离型故障对应的特征频率
  14. win10退出安全模式后,没有网络
  15. 关于常用的Lambda(拉姆达)表达式
  16. 大连海洋大学计算机考研资料汇总
  17. StopWatch使用注意S
  18. 百度宋勋超:百度大规模知识图谱构建及智能应用
  19. pwnable.kr wp leg
  20. Error creating bean with name 'sqlSessionFactory' defined in URL

热门文章

  1. 笔记本电脑配置知识大全
  2. MTK驱动代码流程介绍:
  3. 中国能源统计年鉴资源网站
  4. 收敛数列有界的通俗理解
  5. 锐捷wifi魔盒自动优选服务器,锐捷校园网用python实现自动登录(需要有自己的账号)...
  6. 关于VM14中安装win 10遇到的小问题
  7. keras对MNIST数据集分类
  8. 《软件质量保证与测试》读书笔记(一)
  9. idea 代码格式化快捷方式
  10. caxa自动保存的文件在哪里_CAXA2011突然退出如何找回未保存文件,新建菜单里的文档恢复没有存档。...