• 问题描述
  • 设置边框
  • 表格内容水平居中
  • 完整方法(仅参考)

不逼逼多余的废话,简单的讲讲遇到的问题,以及处理办法。

问题描述

  1. 调用createRow() 方法创建一行无样式。
  2. 调用addRow() 方法创建一行后成功添加边框,但添加的数据都挤在一行。
    个人推测是因为addRow传入的行参数来自同一对象,导致数据重复添加。
  3. 网传调用addNewRowBetween() 方法创建一行存在边框。但新版中该方法体未实现。
    个人下载了3.10.x所有包,都不存在该方法的实现。
  4. 调用insertNewTableRow() 方法创建一行无样式,并且还需要调用addNewCol() 来添加一列数据,列数必须统一,否则导出的Wrod是无法打开的。

设置边框

下面代码分别设置XWPFTable上下左右实线黑色边框,放到头部定义就好。定义完成我们就能使用createRow()添加出有边框的表格
CTTblBorders borders = table.getCTTbl().getTblPr().addNewTblBorders();
CTBorder hBorder = borders.addNewInsideH();
hBorder.setVal(STBorder.Enum.forString("single"));  // 线条类型
hBorder.setSz(new BigInteger("1")); // 线条大小
hBorder.setColor("000000"); // 设置颜色CTBorder vBorder = borders.addNewInsideV();
vBorder.setVal(STBorder.Enum.forString("single"));
vBorder.setSz(new BigInteger("1"));
vBorder.setColor("000000");CTBorder lBorder = borders.addNewLeft();
lBorder.setVal(STBorder.Enum.forString("single"));
lBorder.setSz(new BigInteger("1"));
lBorder.setColor("000000");CTBorder rBorder = borders.addNewRight();
rBorder.setVal(STBorder.Enum.forString("single"));
rBorder.setSz(new BigInteger("1"));
rBorder.setColor("000000");CTBorder tBorder = borders.addNewTop();
tBorder.setVal(STBorder.Enum.forString("single"));
tBorder.setSz(new BigInteger("1"));
tBorder.setColor("000000");CTBorder bBorder = borders.addNewBottom();
bBorder.setVal(STBorder.Enum.forString("single"));
bBorder.setSz(new BigInteger("1"));
bBorder.setColor("000000");table.createRow(); // 增加一行

表格内容水平居中

这里的水平居中需针对到每一个单元格设置(可能有全局设置,只不过我不晓得)
XWPFTableCell cell = cells.get(index);/** 设置水平居中 */
CTTc cttc = cell.getCTTc();
CTTcPr ctPr = cttc.addNewTcPr();
ctPr.addNewVAlign().setVal(STVerticalJc.CENTER);
cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER);

使用此方法设置水平居中还需ooxml-schemas包,看清楚不是poi-ooxml-schemas

完整方法(仅参考)

个人使用,做个备忘录,来到这个页面的小伙伴不需要关注这里 - -
/*** 为表格插入数据,行数不够添加新行** @param table     需要插入数据的表格* @param tableList 插入数据集合*/private void insertTable(XWPFTable table, List<String[]> tableList) {// 添加边框CTTblBorders borders = table.getCTTbl().getTblPr().addNewTblBorders();CTBorder hBorder = borders.addNewInsideH();hBorder.setVal(STBorder.Enum.forString("single"));hBorder.setSz(new BigInteger("1"));hBorder.setColor("000000");CTBorder vBorder = borders.addNewInsideV();vBorder.setVal(STBorder.Enum.forString("single"));vBorder.setSz(new BigInteger("1"));vBorder.setColor("000000");CTBorder lBorder = borders.addNewLeft();lBorder.setVal(STBorder.Enum.forString("single"));lBorder.setSz(new BigInteger("1"));lBorder.setColor("000000");CTBorder rBorder = borders.addNewRight();rBorder.setVal(STBorder.Enum.forString("single"));rBorder.setSz(new BigInteger("1"));rBorder.setColor("000000");CTBorder tBorder = borders.addNewTop();tBorder.setVal(STBorder.Enum.forString("single"));tBorder.setSz(new BigInteger("1"));tBorder.setColor("000000");CTBorder bBorder = borders.addNewBottom();bBorder.setVal(STBorder.Enum.forString("single"));bBorder.setSz(new BigInteger("1"));bBorder.setColor("000000");//创建行,根据需要插入的数据添加新行,不处理表头for (int i = 1; i < tableList.size(); i++) {table.createRow();}//遍历表格插入数据List<XWPFTableRow> rows = table.getRows();for (int i = 1; i < rows.size(); i++) {List<XWPFTableCell> cells = rows.get(i).getTableCells();for (int j = 0; j < cells.size(); j++) {XWPFTableCell cell = cells.get(j);// 设置水平居中,需要ooxml-schemas包支持CTTc cttc = cell.getCTTc();CTTcPr ctPr = cttc.addNewTcPr();ctPr.addNewVAlign().setVal(STVerticalJc.CENTER);cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER);cell.setText(tableList.get(i - 1)[j]);}}}

POI 设置Word表格边框、表格文字水平居中相关推荐

  1. poi设置word表格单元格宽度_java poi 设置word 格式如表格一类的

    2012-05-29 回答 你好,试试以下代码行不行. package com.sample; import java.awt.color; import java.io.fileoutputstre ...

  2. word 如何设置表格边框和文字间的距离

    word 如何设置表格边框和文字间的距离 2010-06-23 14:58 OlandoV  |  分类:办公软件  |  浏览10533次 现在领导要我做1张表格,但是给出来的样板上 某些表格中的文 ...

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

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

  4. 使用poi给word文档表格中添加样式

    32.使用poi给word文档表格中添加样式 File fileNew = new File(exportPath + exportName + ".docx");InputStr ...

  5. POI导出word文件中表格合并方法(行合并,列合并)

    项目中遇到记录一下 POI导出word文件中表格合并方法(行合并,列合并) . // word表格跨列合并单元格//row 指定行.fromCell 开始列数.toCell 结束列数.public v ...

  6. java POI对word中的表格动态插入固定数据,以及插入不确定数量的的数据

    java POI对word中的表格动态插入固定数据,以及插入不具体的数据 遇到个项目本来是用Execl导出的,相对简单,客户要求用Word导出,并按照他们给的模板进行导出: 从网上百度了一下,然后自己 ...

  7. python 设置 word中所有表格样式(行间距、缩进、字体、字号、颜色、磅值)

    项目场景: 提示:这里简述项目相关背景: 例如:客户要求设置word 中所有表格的样式,包括行间距.缩进.字体.字号.颜色.磅值等. 问题描述 提示:RPA没有这么多的操作命令,只能靠python的w ...

  8. POI设置word文档只可修订

    POI设置word文档只可修订 前景 POI限制文档编辑接口 代码实现 前景 项目中需要一些文档保护和历史记录机制,因为之前项目对文档处理一直在用POI,所以本次也只考虑POI实现(Spire.Doc ...

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

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

  10. poi 设置word表格颜色_办公软件小课堂 Word表格的设置

    你是否还在为考证烦恼?是否不知从何学起?学习部每周的办公软件小课堂!这里总有你想要的! 本周给大家整理的是 Word表格的设置 01 插入选择卡→表格 02 文本转表格 步骤1:选中要转换成表格的文本 ...

最新文章

  1. r语言echarts画箱线图_echarts学习笔记之箱线图的分析与绘制详解
  2. 忘了root口令解决方法
  3. WCF分发简述-ChannelDispatcher,EndpointDispatcher,MessageFilter
  4. Docker安装部署MongoDB及MySql和MongoDB的语法对比
  5. App设计灵感之十二组精美的房产App设计案例
  6. Apache Mesos + Marathon和Java EE
  7. 有关php链接MySql数据库的总结
  8. 聊聊 HTTP 协议的知识点
  9. java.sql找不到_java.sql.SQLException:找不到适用于jdbc:microsoft:
  10. Axure实操笔记之axure炫酷的作者信息设置
  11. MATLAB数据拟合时出错
  12. wowza 技术交流群/ wowza 流媒体软件交流群
  13. 室内声场计算机模拟的声线跟踪法和虚声源法,计算机声场模拟软件ODEON及其应用lowbar;彭庆 - 范文中心...
  14. excel加密文档破解
  15. JAVA音程_下列选项中哪个音程是减三和弦?
  16. 豆瓣社区:《如何高效学习》应用与心得
  17. Gabby 的BLOG 开张了!
  18. 使用ipp静态库,ipp-samples在linux下的make过程
  19. 【OWASP Top 10】2021版
  20. win10内网穿透实现远程桌面连接

热门文章

  1. Python:计算机视觉实现视频的AI换脸(最基础)
  2. ASO优化含义篇:积分墙是什么?
  3. 物格而后知至,知至而后意诚,意诚而后心正,心正而后身修,身修而后家齐,家齐而后国治,国治而后天下平...
  4. 八类网线和七类网线的区别_八类网线你用过吗?与六类、七类等网线有啥区别?...
  5. excel各种填充的总结
  6. could not get batchedbridge, make sure your bundle is packaged correctly
  7. 2021年百度账号批量取消绑定手机号教程
  8. 微信支付系列(三)之二维码扫码支付
  9. 图像传感器设计资料-764-GSPRINT4502 2MP-4.5微米 全局快门 高速 CMOS 图像传感器
  10. Excel 无法打开文件“新建 Microsoft Excel 工作表.xlsx”,因为文件格式或文件扩展名无效