| | |
| | | List<TableRenderData> tables1 = new ArrayList<>(); |
| | | TableRenderData tableRenderData = new TableRenderData(); |
| | | tableRenderData.setRows(new ArrayList<>()); |
| | | |
| | | double totalHeight = 0.0; // 用于跟踪当前表格的总行高 |
| | | double heightThreshold = 8000.0; // 阈值,例如40cm*28px*15twips |
| | | double heightThreshold = 8000.0; // 阈值, |
| | | List<RowRenderData> firstTwoRows = new ArrayList<>(); // 保存前两行以便复制到新表格 |
| | | |
| | | |
| | | // 保存前两行以便复制到新表格 |
| | | if (rows.size() >= 2) { |
| | | firstTwoRows.add(rows.get(0)); |
| | | firstTwoRows.add(rows.get(1)); |
| | | } |
| | | |
| | | for (RowRenderData row : rows) { |
| | | double rowHeight = row.getRowStyle().getHeight(); // 获取当前行的行高 |
| | | totalHeight += rowHeight; // 更新总行高 |
| | | |
| | | if (totalHeight >= heightThreshold) { |
| | | // 创建新表格并复制前两行 |
| | | TableRenderData newTableRenderData = new TableRenderData(); |
| | | newTableRenderData.setRows(new ArrayList<>(firstTwoRows)); |
| | | |
| | | //设置样式 |
| | | TableStyle tableStyle = new TableStyle(); |
| | | tableStyle.setColWidths(new int[]{650, 1600, 2000, 750, 2800, 1100, 1100}); |
| | | tableStyle.setWidth("10000"); |
| | |
| | | tableStyle.setBottomBorder(borderStyle); |
| | | tableRenderData.setTableStyle(tableStyle); |
| | | newTableRenderData.setTableStyle(tableStyle); |
| | | |
| | | tables1.add(tableRenderData); |
| | | tableRenderData = newTableRenderData; |
| | | totalHeight = rowHeight; |
| | |
| | | tableRenderData.getRows().add(row); |
| | | } |
| | | if (!tableRenderData.getRows().isEmpty()) { |
| | | //设置样式 |
| | | TableStyle tableStyle = new TableStyle(); |
| | | tableStyle.setColWidths(new int[]{650, 1600, 2000, 750, 2800, 1100, 1100}); |
| | | tableStyle.setWidth("10000"); |
| | |
| | | tableRenderData.setTableStyle(tableStyle); |
| | | tables1.add(tableRenderData); |
| | | } |
| | | |
| | | tables1.forEach(table -> { |
| | | Map<String, Object> tableMap = new HashMap<>(); |
| | | tableMap.put("table", table); |
| | |
| | | List<String> list = new ArrayList<>(maps.keySet()); |
| | | for (int a = list.size() - 1; a >= 0; a--) { |
| | | Map<String, Integer> v = maps.get(list.get(a)); |
| | | /* for (int j = 0; j < v.get("er") - v.get("sr") + 1; j++) { |
| | | if (v.get("ec") > v.get("sc")) { |
| | | TableTools.mergeCellsHorizonal(table, v.get("sr") + j, v.get("sc"), v.get("ec")); |
| | | } |
| | | } |
| | | if (v.get("er") > v.get("sr")) { |
| | | TableTools.mergeCellsVertically(table, v.get("sc"), v.get("sr"), v.get("er")); |
| | | }*/ |
| | | for (int j = 0; j < v.get("er") - v.get("sr") + 1; j++) { |
| | | if (v.get("ec") > v.get("sc")) { |
| | | XWPFTableRow row = table.getRow(v.get("sr") + j); |
| | |
| | | } catch (IOException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | //处理中英文换行的问题 |
| | | try { |
| | | FileInputStream stream1 = new FileInputStream(path); |
| | | XWPFDocument document1 = new XWPFDocument(stream1); |
| | | List<XWPFTable> xwpfTables1 = document1.getTables(); |
| | | //处理中英文换行的问题 |
| | | for (int i = 1; i < xwpfTables1.size() - (deviceList == null ? 1 : 2); i++) { |
| | | for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) { |
| | | for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) { |
| | |
| | | } |
| | | xwpfParagraph.setAlignment(ParagraphAlignment.CENTER); |
| | | } |
| | | /*if (k == 2 || k == 3 || k == 4) { |
| | | if (k == 2 && xwpfTables1.get(i).getRows().get(j).getTableCells().get(k-1).getText().contains("@@")) { |
| | | XWPFTableCell cell = xwpfTables1.get(i).getRow(j).getCell(k); |
| | | CTTblWidth tblWidth = cell.getCTTc().addNewTcPr().addNewTcW(); |
| | | tblWidth.setType(STTblWidth.DXA); |
| | | tblWidth.setW(BigInteger.valueOf((int) (4.79 * 1440 / 2.54))); |
| | | } |
| | | if (k == 3 && xwpfTables1.get(i).getRows().get(j).getTableCells().get(k - 2).getText().contains("@@")) { |
| | | XWPFTableCell cell = xwpfTables1.get(i).getRow(j).getCell(k); |
| | | CTTblWidth tblWidth = cell.getCTTc().addNewTcPr().addNewTcW(); |
| | | tblWidth.setType(STTblWidth.DXA); |
| | | tblWidth.setW(BigInteger.valueOf((int) (1.49 * 1440 / 2.54))); |
| | | } |
| | | if (k == 4 && xwpfTables1.get(i).getRows().get(j).getTableCells().get(k - 3).getText().contains("@@")) { |
| | | XWPFTableCell cell = xwpfTables1.get(i).getRow(j).getCell(k); |
| | | CTTblWidth tblWidth = cell.getCTTc().addNewTcPr().addNewTcW(); |
| | | tblWidth.setType(STTblWidth.DXA); |
| | | tblWidth.setW(BigInteger.valueOf((int) (3.51 * 1440 / 2.54))); |
| | | } |
| | | } |
| | | if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@@")) { |
| | | String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText(); |
| | | text = text.replace("@@",""); |
| | | xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0); |
| | | XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph(); |
| | | XWPFRun run = xwpfParagraph.createRun(); |
| | | run.setText(text); |
| | | xwpfParagraph.setAlignment(ParagraphAlignment.CENTER); |
| | | }*/ |
| | | } |
| | | } |
| | | } |