本文介绍: 然后,检查当前页的最后一行是否是表格的最后一行,如果是,则在表格下方添加一个空行,并为该行的每个单元格设置上边框线。通过这两个步骤,您可以确保在分页时不丢失上边框。请根据您的具体需求和代码结构进行相应的调整和集成。2. 当表格分页时,检查当前页的最后一行是否位于表格的最后一行。如果是,则在表格的下方添加一个空行,并为该行的每个单元格设置上边框。创建表格,并为每个单元格设置上边框线。创建一个新段落,并在段落中添加分页符(
问题具体描述: 使用easypoi导出的Word中包含一个表格,表格行数较多,需要分页显示,在分页后第一行的上边框部分丢失,显示不美观,具体如下:
解决:
对表格中每行都添加一个上边框,具体如下:
XWPFDocument document = WordExportUtil.exportWord07(templateFile.getAbsolutePath(),map);
//以下为添加单元格上线框操作,应该可以再优化,因为此处是对每个单元格添加
List<XWPFTable> tables = document.getTables();
for (XWPFTable table : tables) {
int numberOfRows = table.getNumberOfRows();
for (int i = 0; i < numberOfRows; i++) {
XWPFTableRow row = table.getRow(i);
List<XWPFTableCell> tableCells = row.getTableCells();
CTTcPr tcPr ;
CTTcBorders ctTcBorders;
CTBorder ctBorder;
for (XWPFTableCell tableCell : tableCells) {
tcPr = tableCell.getCTTc().getTcPr();
if(tcPr==null)tcPr=tableCell.getCTTc().addNewTcPr();
ctTcBorders = tcPr.addNewTcBorders();
ctBorder = ctTcBorders.addNewTop();
ctBorder.setVal(STBorder.SINGLE);
}
}
}
知识点:
- 创建表格时,为每个单元格设置上边框。这样可以确保每个单元格都有上边框线。
XWPFTable table = document.createTable(rows, cols);
for (int row = 0; row < rows; row++) {
for (int col = 0; col < cols; col++) {
XWPFTableCell cell = table.getRow(row).getCell(col);
CTTcPr cellProperties = cell.getCTTc().getTcPr();
if (cellProperties == null) {
cellProperties =cell.getCTTc().addNewTcPr();
}
CTTcBorders borders = cellProperties.addNewTcBorders();
CTBorder topBorder = borders.addNewTop();
topBorder.setVal(STBorder.SINGLE);
}
}
上述代码使用XWPFTable
创建表格,并为每个单元格设置上边框线。
2. 当表格分页时,检查当前页的最后一行是否位于表格的最后一行。如果是,则在表格的下方添加一个空行,并为该行的每个单元格设置上边框
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
run.addBreak(BreakType.PAGE);
if (isLastRowInTable(pageLastRow, table)) {
XWPFTableRow emptyRow = table.createRow();
for (int col = 0; col < cols; col++) {
XWPFTableCell cell = emptyRow.getCell(col);
CTTcPr cellProperties = cell.getCTTc().getTcPr();
if (cellProperties == null) {
cellProperties = cell.getCTTc().addNewTcPr();
}
CTTcBorders borders = cellProperties.addNewTcBorders();
CTBorder topBorder = borders.addNewTop();
topBorder.setVal(STBorder.SINGLE);
}
}
上述代码使用XWPFParagraph
和XWPFRun
创建一个新段落,并在段落中添加分页符(addBreak(BreakType.PAGE)
)。然后,检查当前页的最后一行是否是表格的最后一行,如果是,则在表格下方添加一个空行,并为该行的每个单元格设置上边框线。通过这两个步骤,您可以确保在分页时不丢失上边框。请根据您的具体需求和代码结构进行相应的调整和集成。
原文地址:https://blog.csdn.net/qq_44705614/article/details/135862752
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_62713.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。