300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > poi word 表格设置居中 左对齐缩进 边框 字体

poi word 表格设置居中 左对齐缩进 边框 字体

时间:2022-11-27 01:36:33

相关推荐

poi word 表格设置居中 左对齐缩进 边框 字体

个人记录使用

1.表格居中与左对齐缩进二选一

2.边框设置可参考POI 设置Word表格边框、表格文字水平居中

package com.gsafety.anjian.analysis.util;/*** 设置poi-tl生成嵌套子模板中的表格垂直居中**/import com.deepoove.poi.NiceXWPFDocument;import com.deepoove.poi.XWPFTemplate;import mons.collections.CollectionUtils;import mons.lang.StringUtils;import org.apache.poi.xwpf.usermodel.*;import org.openxmlformats.schemas.wordprocessingml.x.main.*;import java.math.BigInteger;import java.util.HashSet;import java.util.List;import java.util.Set;public class PoilUtil {private static String notpath = "/evn_ets_rescueprogramme/moduleflag-1/";public static void setExcelVertical(XWPFTemplate template, String dirPath) {NiceXWPFDocument document = template.getXWPFDocument();List<XWPFTable> tables = document.getTables();if (tables!=null && tables.size()>1) {for (int z = 1; z < tables.size(); z++) {XWPFTable table = tables.get(z);CTTblLayoutType type = table.getCTTbl().getTblPr().addNewTblLayout();type.setType(STTblLayoutType.FIXED);//设置表格居中CTJc jc = table.getCTTbl().getTblPr().getJc();if(jc == null){jc = table.getCTTbl().getTblPr().addNewJc();}jc.setVal(STJc.CENTER);table.getCTTbl().getTblPr().setJc(jc);//设置表格左对齐缩进/*CTTblWidth tblInd = table.getCTTbl().getTblPr().getTblInd();if(null == tblInd){tblInd = table.getCTTbl().getTblPr().addNewTblInd();}//缩进距离tblInd.setW(BigInteger.valueOf(170));table.getCTTbl().getTblPr().setTblInd(tblInd);*//**************设置表格样式*****************/if("/evn_ets_rescueprogramme/moduleflag-3/".equals(dirPath)){List<CTTblGridCol> gridColList = table.getCTTbl().getTblGrid().getGridColList();if (CollectionUtils.isNotEmpty(gridColList)) {//根据不同列长度,设置不同列宽,具体宽度以提供的模板为准if (gridColList.size() == 5) {CTTblGrid ctTblGrid = table.getCTTbl().addNewTblGrid();ctTblGrid.addNewGridCol().setW(BigInteger.valueOf(1222));ctTblGrid.addNewGridCol().setW(BigInteger.valueOf(1609));ctTblGrid.addNewGridCol().setW(BigInteger.valueOf(2210));ctTblGrid.addNewGridCol().setW(BigInteger.valueOf(1927));ctTblGrid.addNewGridCol().setW(BigInteger.valueOf(1255));table.getCTTbl().setTblGrid(ctTblGrid);}else{CTTblGrid ctTblGrid = table.getCTTbl().addNewTblGrid();ctTblGrid.addNewGridCol().setW(BigInteger.valueOf(1211));ctTblGrid.addNewGridCol().setW(BigInteger.valueOf(875));ctTblGrid.addNewGridCol().setW(BigInteger.valueOf(2493));ctTblGrid.addNewGridCol().setW(BigInteger.valueOf(821));ctTblGrid.addNewGridCol().setW(BigInteger.valueOf(1578));ctTblGrid.addNewGridCol().setW(BigInteger.valueOf(1257));table.getCTTbl().setTblGrid(ctTblGrid);}}//参考博客:/qq_31189355/article/details/80438506CTTblBorders borders = table.getCTTbl().getTblPr().addNewTblBorders();//表格内部横向表格CTBorder hBorder = borders.addNewInsideH();// 线条类型(格式参考:创建word文档,参入最终需要的结果表格,另存xml文件,查看xml文件中的具体格式)hBorder.setVal(STBorder.Enum.forString("single"));// 线条大小hBorder.setSz(new BigInteger("6"));// 设置颜色hBorder.setColor("auto");// 表格内部纵向表格CTBorder vBorder = borders.addNewInsideV();vBorder.setVal(STBorder.Enum.forString("single"));vBorder.setSz(new BigInteger("6"));vBorder.setColor("auto");//表格最左边一条线的样式CTBorder lBorder = borders.addNewLeft();lBorder.setVal(STBorder.Enum.forString("thinThickSmallGap"));lBorder.setSz(new BigInteger("12"));lBorder.setColor("auto");//表格最上边一条线(顶部)的样式CTBorder tBorder = borders.addNewTop();tBorder.setVal(STBorder.Enum.forString("thinThickSmallGap"));tBorder.setSz(new BigInteger("12"));tBorder.setColor("auto");//表格最右边一条线的样式CTBorder rBorder = borders.addNewRight();rBorder.setVal(STBorder.Enum.forString("thickThinSmallGap"));rBorder.setSz(new BigInteger("12"));rBorder.setColor("auto");//表格最下边一条线(底部)的样式CTBorder bBorder = borders.addNewBottom();bBorder.setVal(STBorder.Enum.forString("thickThinSmallGap"));bBorder.setSz(new BigInteger("12"));bBorder.setColor("auto");}/**************设置表格样式**************/List<XWPFTableRow> rows = table.getRows();if (rows!=null && rows.size()>0) {for (int i = 0; i < rows.size(); i++) {XWPFTableRow row = rows.get(i);//for (XWPFTableRow row : rows) {//设置表格内容不允许跨页换行row.setCantSplitRow(true);if (i==0) {//设置表格标题在每一页显示row.setRepeatHeader(true);}if(notpath.indexOf(dirPath)<0){List<XWPFTableCell> cells = row.getTableCells();if (cells!=null && cells.size()>0) {for (XWPFTableCell cell : cells) {if (StringUtils.isNotBlank(cell.getText())) {//垂直居中cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); }}}}//字体处理if(("/evn_ets_rescueprogramme/moduleflag-3/".equals(dirPath)) && i > 0){List<XWPFTableCell> cells = row.getTableCells();if (cells!=null && cells.size()>0) {for (XWPFTableCell cell : cells) {List<XWPFParagraph> paragraphs = cell.getParagraphs();for (int j = 0; j < paragraphs.size(); j++) {XWPFParagraph xwpfParagraph = paragraphs.get(j);List<XWPFRun> runs = xwpfParagraph.getRuns();for (int k = 0; k < runs.size(); k++) {XWPFRun xwpfRun = runs.get(k);CTFonts font = xwpfRun.getCTR().addNewRPr().addNewRFonts();//中文font.setEastAsia("仿宋_GB2312"); //改变中文字体设置这个// ASCIIfont.setAscii("Times New Roman"); //改变数字或者英文字体需要设置这个}}}}}}}}}}}

项目中使用的poi-tl进行渲染模板,mavne依赖如下,poi-tl网址:Poi-tl Documentationword模板引擎/poi-tl/

<dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.4.0</version></dependency>

补充:由于表格边框采取双边框样式,左上与右下的边框样式会存在差别,右下边框需要使用与左上相反的边框样式,整个表格边框样式才会完整,以上代码块样式已调整

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。