Java:实现从word文档中取出指定数据存入excel中的小程序。
文件准备
一、把需要处理的word全都放入d盘下 words目录中。

程序配置
一、下载安装Idea
地址:IntelliJ IDEA – the Leading Java and Kotlin IDE (jetbrains.com)
二、启动idea,新建项目

三、导入依赖
在pom.xml中加入以下数据,然后刷新
<dependencies> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> </dependencies>

四、新建一个Demo类
Demo类内容:
import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; /** * @author * @date 2023/5/8-21:43 * @description */ public class Demo { /** * word文档的文件夹 */ private static final String WORD_FILE_PATH="d:/words"; /** * excel文件出现的位置 */ public static final String EXCEAL_FILE_PATH="d:/best.xlsx"; /** * 主送位置 */ public static final int TEXT_HEAD = 13; /** * 日期位置 */ public static final int TEXT_END = 20; public static void main(String[] args) throws Exception { Demo demo= new Demo(); System.out.println("-------------------程序开始----------------------"); //获取文件名 ArrayList<String> fileName = demo.getChildFileName(WORD_FILE_PATH); //创建Excel文件 XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet = workbook.createSheet("Sheet1"); //计数器 int i = 0; //获取内容 for (String s:fileName){ //获取到主题和时间 String[] strings = demo.wordToExcel(s); //写入表格中 demo.writeText(strings,i,sheet); System.out.println("第"+(i++)+"次循环开始"); } //写出Excel文件 FileOutputStream outputStream = new FileOutputStream(EXCEAL_FILE_PATH); workbook.write(outputStream); workbook.close(); System.out.println("-------------------程序结束----------------------"); } private void writeText(String[] strings,int i, XSSFSheet sheet) throws IOException { writeExcel(strings[0],i,0,sheet); writeExcel(strings[1],i,1,sheet); } /** * 把指定内容写到指定位置 * @param text * @param rowNumber * @param columnIndex * @param sheet * @throws IOException */ private void writeExcel(String text,int rowNumber,int columnIndex, XSSFSheet sheet) throws IOException { //选中行 XSSFRow row = sheet.getRow(rowNumber); if (row == null) { row = sheet.createRow(rowNumber); } //选中列 XSSFCell cell = row.createCell(columnIndex); //写入 cell.setCellValue(text); } /** * 通过文件名,拿到主送和日期:使用下划线分开 * @param wordName * @return * @throws Exception */ private String[] wordToExcel(String wordName) throws Exception{ //获取到文档对象 XWPFDocument doc = new XWPFDocument(new FileInputStream(WORD_FILE_PATH+"/"+wordName)); //取出主送 XWPFParagraph paragraphHead = doc.getParagraphs().get(TEXT_HEAD); String textHaed = paragraphHead.getText(); //去掉冒号 textHaed = textHaed.substring(0, textHaed.length() - 1); System.out.print("获取到主送:"+textHaed); //取出落款 XWPFParagraph paragraphEnd = doc.getParagraphs().get(TEXT_END); String textEnd = paragraphEnd.getText(); System.out.println("----获取到日期:"+textEnd); String[] strings = {textHaed,textEnd}; doc.close(); return strings; } /** * 通过文件夹路径获取到里面所有的文件名 * @param path * @return */ private ArrayList getChildFileName(String path){ File file= new File(path); ArrayList list = traverseFolder(file); return list; } /** * 遍历文件 * @param folder * @return */ private ArrayList traverseFolder(File folder) { ArrayList list = new ArrayList(); if (folder.isDirectory()) { File[] files = folder.listFiles(); if (files != null) { for (File file : files) { if (file.isDirectory()) { traverseFolder(file); } else { list.add(file.getName()); System.out.println(file.getName()); } } } } return list; } }

五、执行main方法
即可在指定位置获得excel。
运行结果
在d盘下生成excel文件best.xlsx
