本文主要是介绍Java利用poi实现word表格转excel,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《Java利用poi实现word表格转excel》这篇文章主要为大家详细介绍了Java如何利用poi实现word表格转excel,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...
一、每行对象类
需要针对不同的表格进行对应的创建。
package org.example.wordToExcel; /** * @Auther: rll * @Date: 2022/1/11 10:57 * @Description: 每行对象类 */ public class MyExcelBook { private String xuHao; private String yingYongMing; private String yiBenZhang; private String jianShu; private String jianShe; private String jiXiao; private String jinDu; private String qianTou; private String caChina编程nYu; public String getXuHao() { return xuHao; } public void setXuHao(String xuHao) { this.xuHao = xuHao; } public String getYingYongMing() { return yingYongMing; } public void setYingYongMing(String yingYongMing) { this.yingYongMing = yingYongMing; } public String getYiBenZhang() { return yiBenZhang; } public void setYiBenZhang(String yiBenZhang) { this.yiBenZhang = yiBenZhang; } public String getJianShu() { return jianShu; } public void setJianShu(String jianShu) { this.jianShu = jianShu; } public String getJianShe() { return jianShe; } public void setJianShe(String jianShe) { this.jianShe = jianShe; } public String getJiXiao() { return jiXiao; } public void setJiXiao(String jiXiao) { this.jiXiao = jiXiao; } 编程 public String getJinDu() { return jinDu; } public void setJinDu(String jinDu) { this.jinDu = jinDu; } public String getQianTou() { return qianTou; } public void setQianTou(String qianTou) { this.qianTou = qianTou; } public String getCanYu() { return canYu; } public void setCanYu(String canYu) { this.canYu = canYu; } }
二、转换测试
package org.example.wordToExcel; import Java.beans.PropertyDescriptor; import java.io.FileInputStream; import java.io.FileOutputStream; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.ArrayList; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.usermodel.Paragraph; import org.apache.poi.hwpf.usermodel.Range; import org.apache.poi.hwpf.usermodel.Table; import org.apache.poi.hwpf.usermodel.TableCell; import org.apache.poi.hwpf.usermodel.TableIterator; import org.apache.poi.hwpf.usermodel.TableRow; import org.apache.poi.poifs.filesystem.POIFSFileSystem; /** * @Auther: rll * @Date: 2022/1/11 15:57 * @Description: word表格转excel */ public class ReadwordToWriteExcel { static String fileName = "C:\\Users\\Desktop\\testFile"; public static void main(String[] args) throws Exception { readWord(); } public static void readWord() { ArrayList<MyExcelBook> list = new ArrayList<>(); list.clear(); try { FileInputStream in = new FileInputStream(fileName + ".doc");//载入文档 编程China编程 POIFSFileSystem pfs = new POIFSFileSystem(in); HWPFDocument hwpf = new HWPFDocument(pfs); Range range = hwpf.getRange(); TableIterator it = new TableIterator(range); //遍历word while (it.hasNext()) { Table tb = it.next(); //遍历行 for (int i = 0; i < tb.numRows(); i++) { TableRow tr = tb.getRow(i); //迭代列 MyExcelBook excelBook = new MyExcelBook(); Class aClass = excelBook.getClass(); for (int j = 0; j < tr.numCells(); j++) { TableCell td = tr.getCell(j);//取得单元格 //取得单元格的内容 Field[] fields = aClass.getDeclaredFields(); //遍历单元格所有内容放入一个sb StringBuilder sb = new StringBuilder(); for (int k = 0; k < td.numParagraphs(); k++) { Paragraph para = td.getParagraph(k); String s = para.text(); sb.append(s); } //反射遍历excel字段,赋值给book对象 //反射赋值和取值 Field field = fields[j]; String fieldName = field.getName(); PropertyDescriptor pd = new jsPropertyDescriptor(field.getName(), aClass); // 获取set方法 Method setMethod = pd.getWriteMethod(); setMethod.invoke(excelBook, sb.deleteCharAt(sb.length() - 1).toString());//去掉最后一个标记符号 sb.delete(0, sb.length()); } list.add(excelBook); } } writeExecl(list); } catch (Exception e) { e.printStackTrace(); } } public static void writeExecl(ArrayList<MyExcelBook> list) throws Exception { //创建一个webbook,对应一个Excel文件 HSSFWorkbook wb = new HSSFWorkbook(); //在webbook中添加一个sheet,对应Excel文件中的sheet HSSFSheet sheet = wb.createSheet("sheet1"); HSSFRow row = null; for (int i = 0; i < list.size(); i++) { //在sheet中添加行 row = sheet.createRow(i); MyExcelBook excelBook = list.get(i); //反射取值 Class aClass = excelBook.getClass(); Field[] fields = aClass.getDeclaredFields(); for (int j = 0; j < fields.length; j++) { Field field = fields[j]; String fieldName = field.getName(); PropertyDescriptor pd = new PropertyDescriptor(fieldName, aClass); //get方法 Method getMethod = pd.getReadMethod(); //创建单元格 row.createCell(j).setCellValue(String.valueOf(getMethod.invoke(excelBook))); } } //生成文件 try { FileOutputStream fout = new FileOutputStream(fileName + ".xls"); wb.write(fout); fout.close(); } catch (Exception e) { e.printStackTrace(); } } }
测试的word文档,请使用只有表格且没有合并表格的进行测试,
请使用只有表格且没有合并表格的进行测试,
请使用只有表格且没有合并表格的进行测试。
到此这篇关于Java利用poi实现word表格转excel编程的文章就介绍到这了,更多相关Java word转excel内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!
这篇关于Java利用poi实现word表格转excel的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!