From 014639637a80b0549cc0aee00b9a9670fb57827c Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期五, 10 二月 2023 17:26:30 +0800 Subject: [PATCH] 1 --- src/main/java/com/lf/server/helper/WordHelper.java | 107 ++++++++++++++++++++++------------- pom.xml | 15 ++-- src/main/java/com/lf/server/service/sys/ReportService.java | 23 +++++++ 3 files changed, 97 insertions(+), 48 deletions(-) diff --git a/pom.xml b/pom.xml index cadd57a..4ce0b1c 100644 --- a/pom.xml +++ b/pom.xml @@ -245,20 +245,19 @@ <!--apache.poi--> <dependency> <groupId>org.apache.poi</groupId> - <artifactId>poi</artifactId> - <version>5.2.2</version> - <scope>compile</scope> - </dependency> - <dependency> - <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> - <version>5.2.2</version> + <version>3.16</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-excelant</artifactId> - <version>5.2.2</version> + <version>3.16</version> + </dependency> + <dependency> + <groupId>org.apache.poi</groupId> + <artifactId>poi-examples</artifactId> + <version>3.16</version> </dependency> <dependency> <groupId>org.apache.xmlbeans</groupId> diff --git a/src/main/java/com/lf/server/helper/WordHelper.java b/src/main/java/com/lf/server/helper/WordHelper.java index 1881103..ff87b12 100644 --- a/src/main/java/com/lf/server/helper/WordHelper.java +++ b/src/main/java/com/lf/server/helper/WordHelper.java @@ -1,10 +1,10 @@ package com.lf.server.helper; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.apache.poi.xwpf.usermodel.*; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; +import java.io.*; import java.util.List; import java.util.Map; @@ -13,23 +13,34 @@ * @author WWW */ public class WordHelper { + private final static Log log = LogFactory.getLog(WordHelper.class); + /** * 閫氳繃word妯℃澘鐢熸垚word鐨勪富鏂规硶 */ - public static void generateWord(InputStream inputStream, OutputStream outputStream, Map<String, String> insertTextMap, List<String[]> addList) throws IOException { - // 鑾峰彇docx瑙f瀽瀵硅薄 - XWPFDocument xwpfDocument = new XWPFDocument(inputStream); + public static void generateWord(String inputFile, String outPutFile, Map<String, String> insertTextMap, List<String[]> addList) { + try { + FileInputStream inputStream = new FileInputStream(inputFile); + FileOutputStream outputStream = new FileOutputStream(outPutFile); - // 澶勭悊鎵�鏈夋枃娈垫暟鎹紝闄や簡琛ㄦ牸 - handleParagraphs(xwpfDocument, insertTextMap); + // 鑾峰彇docx瑙f瀽瀵硅薄 + XWPFDocument xwpfDocument = new XWPFDocument(inputStream); - // 澶勭悊琛ㄦ牸鏁版嵁 - handleTable(xwpfDocument, insertTextMap, addList); + // 澶勭悊鎵�鏈夋枃娈垫暟鎹紝闄や簡琛ㄦ牸 + if (null != insertTextMap && insertTextMap.size() > 0) { + handleParagraphs(xwpfDocument, insertTextMap); + } - // 鍐欏叆鏁版嵁 - xwpfDocument.write(outputStream); + // 澶勭悊琛ㄦ牸鏁版嵁 + handleTable(xwpfDocument, insertTextMap, addList); - outputStream.close(); + // 鍐欏叆鏁版嵁 + xwpfDocument.write(outputStream); + + outputStream.close(); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + } } /** @@ -50,7 +61,7 @@ /** * 澶勭悊琛ㄦ牸鏁版嵁鏂规硶 */ - public static void handleTable(XWPFDocument xwpfDocument, Map<String, String> insertTextMap, List<String[]> addList) { + public static void handleTable(XWPFDocument xwpfDocument, Map<String, String> map, List<String[]> addList) { List<XWPFTable> tables = xwpfDocument.getTables(); for (XWPFTable table : tables) { List<XWPFTableRow> rows = table.getRows(); @@ -59,36 +70,52 @@ } if (isReplacement(table.getText())) { - // 鏇挎崲鏁版嵁 - for (XWPFTableRow row : rows) { - List<XWPFTableCell> tableCells = row.getTableCells(); - for (XWPFTableCell tableCell : tableCells) { - if (isReplacement(tableCell.getText())) { - List<XWPFParagraph> paragraphs = tableCell.getParagraphs(); - for (XWPFParagraph paragraph : paragraphs) { - List<XWPFRun> runs = paragraph.getRuns(); - for (XWPFRun run : runs) { - run.setText(matchesValue(tableCell.getText(), insertTextMap), 0); - } - } + if (null == map || map.isEmpty()) { + continue; + } + + replaceData(rows, map); + } else { + insertData(table, addList); + } + } + } + + /** + * 鏇挎崲鏁版嵁 + */ + private static void replaceData(List<XWPFTableRow> rows, Map<String, String> map) { + for (XWPFTableRow row : rows) { + List<XWPFTableCell> tableCells = row.getTableCells(); + for (XWPFTableCell tableCell : tableCells) { + if (isReplacement(tableCell.getText())) { + List<XWPFParagraph> paragraphs = tableCell.getParagraphs(); + for (XWPFParagraph paragraph : paragraphs) { + List<XWPFRun> runs = paragraph.getRuns(); + for (XWPFRun run : runs) { + run.setText(matchesValue(tableCell.getText(), map), 0); } } } - } else { - // 鎻掑叆鏁版嵁 - for (int i = 1; i < addList.size(); i++) { - XWPFTableRow row = table.createRow(); - } + } + } + } - List<XWPFTableRow> rowList = table.getRows(); - for (int i = 1; i < rowList.size(); i++) { - XWPFTableRow xwpfTableRow = rowList.get(i); - List<XWPFTableCell> tableCells = xwpfTableRow.getTableCells(); - for (int j = 0; j < tableCells.size(); j++) { - XWPFTableCell xwpfTableCell = tableCells.get(j); - xwpfTableCell.setText(addList.get(i - 1)[j]); - } - } + /** + * 鎻掑叆鏁版嵁 + */ + private static void insertData(XWPFTable table,List<String[]> addList) { + for (int i = 1; i < addList.size(); i++) { + XWPFTableRow row = table.createRow(); + } + + List<XWPFTableRow> rowList = table.getRows(); + for (int i = 1; i < rowList.size(); i++) { + XWPFTableRow xwpfTableRow = rowList.get(i); + List<XWPFTableCell> tableCells = xwpfTableRow.getTableCells(); + for (int j = 0; j < tableCells.size(); j++) { + XWPFTableCell xwpfTableCell = tableCells.get(j); + xwpfTableCell.setText(addList.get(i - 1)[j]); } } } diff --git a/src/main/java/com/lf/server/service/sys/ReportService.java b/src/main/java/com/lf/server/service/sys/ReportService.java index 80382b0..fcce48c 100644 --- a/src/main/java/com/lf/server/service/sys/ReportService.java +++ b/src/main/java/com/lf/server/service/sys/ReportService.java @@ -3,10 +3,12 @@ import com.lf.server.entity.ctrl.CountEntity; import com.lf.server.entity.sys.ReportEntity; import com.lf.server.helper.StringHelper; +import com.lf.server.helper.WordHelper; import com.lf.server.mapper.sys.ReportMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /** @@ -86,4 +88,25 @@ public List<CountEntity> countOperates() { return reportMapper.countOperates(); } + + /** + * 鍒涘缓 鐢ㄦ埛娴侀噺缁熻 Word + */ + public void createCountSizesWord() { + List<CountEntity> list = countOperates(); + if (null == list || list.isEmpty()) { + return; + } + + String inputFile = "D:\\LF\\鐢ㄦ埛娴侀噺缁熻.docx"; + String outPutFile = "D:\\LF\\鐢ㄦ埛娴侀噺缁熻_new.docx"; + + ArrayList<String[]> addList = new ArrayList<>(); + for (CountEntity ce : list) { + String[] strs = new String[]{ce.getM1(), ce.getM2(), ce.getCount().toString()}; + addList.add(strs); + } + + WordHelper.generateWord(inputFile, outPutFile, null, addList); + } } -- Gitblit v1.9.3