一、每行对象类

需要针对不同的表格进行对应的创建。

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 canYu;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");//载入文档POIFSFileSystem pfs = new POIFSFileSystem(in);HWPFDocument hwpf = new HWPFDocument(pfs);Range range = hwpf.getRange();TableIterator it = new TableIterator(range);//遍历wordwhile (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();//遍历单元格所有内容放入一个sbStringBuilder 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 PropertyDescriptor(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文件中的sheetHSSFSheet 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文档,请使用只有表格且没有合并表格的进行测试,

请使用只有表格且没有合并表格的进行测试,

请使用只有表格且没有合并表格的进行测试。

用poi将word表格转excel相关推荐

  1. html表格固定行高_Excel表格向Word复制不变形,Word表格向Excel复制不变形,一次全掌握。...

    Excel情报局 生产搬运分享Excel基础技能 OFFICE知识新青年 用1%的Excel基础搞定99%的日常工作 做一个有文艺范的Excel公众号 Excel是门手艺 玩转需要勇气 听歌阅读 Ex ...

  2. 使用Python将Word表格转Excel

    今日需求 其实就是把Word中的表格转到Excel中,顺便做一个调整. 如果单单是两个表格,那只要简单的复制黏贴即可,但如果上百了呢?那就得考虑自动化了.好在今天碰到的需求中的原文件格式是比较有规律的 ...

  3. POI导出word表格 office打开没问题 wps打开列有问题

    POI导出word表格 office打开没问题 wps打开列有问题 模板样式 导出文档office打开 wps打开文件 1.给表格设置宽,指定宽度 2.将布局固定 3.动态设置单元格的宽度 4.重点设 ...

  4. Python将word表格存入excel —— 格式化pg参数手册

    一. 背景 收到一份<PostgreSQL13商用文档之PG参数参考手册>,打算学习一下,打开文档一看,151页T_T.参数虽然有分类,但不太有规律,word文档格式如下: 个人觉得如果用 ...

  5. 使用Python将Word表格嵌入Excel中!

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以点击下方链接自行获取 Python免费学习资料 ...

  6. python 汇总excel表_【Python】Word表格汇总Excel

    年底了,又到了汇总总结的时候.由于朋友要整理一千多个word表格到excel表上,帮她写了个程序,后来又将它改成更为通用的版本. 其实在这个过程中我找到了有人制作的VBA版,但是使用过程中有BUG [ ...

  7. Java使用Poi填充Word表格模板(图片和文字)

    Java使用Poi填充Word表格模板(图片和文字) **** 由于个人需求需要对表格模板进行操作,所以本文章只对表格进行替换数据操作,没有段落,没有循环遍历,没有延伸!!!!!(后续补充!!!) * ...

  8. 使用POI创建word表格合并单元格兼容wps

    poi创建word表格合并单元格代码如下: /** * @Description: 跨列合并 */ public void mergeCellsHorizontal(XWPFTable table, ...

  9. poi设置word表格单元格宽度_poi导出word表格的操作讲解

    一.效果如下 二.js代码 function export_word(){ //导出word var url = "czzsca/exportWord.do"; this.expo ...

最新文章

  1. 代理详解 静态代理+JDK/CGLIB 动态代理实战
  2. 中蒙最大陆路口岸2018年运行中欧班列1052列
  3. XAML数据绑定(Data Binding)
  4. 步步为营UML建模系列总结
  5. 计算机网络 上海交大 ppt,上海交大计算机网络2.ppt
  6. JS中的(IIFE)(立即调用函数)
  7. Jquery Datatable的使用样例(ssm+bootstrsp框架下)服务器端分页
  8. 深度学习《CycleGAN》
  9. 拆分命令_命令行生存指南:拆分与合并 | Linux 中国
  10. abstract class和interface
  11. 20220911- LC第310场周赛
  12. macos 10.15 软件损坏/无法验证开发者
  13. 基于6818粤嵌开发板的2048游戏项目
  14. django-视图集ViewSet
  15. Windows7下网上银行U盾无法使用的解决办法
  16. 解决org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags
  17. 上海电信的iptv穿越dd-wrt
  18. Ubuntu18.04和win10双系统完美安装(dell笔记本电脑)
  19. unity打包的安卓无法解析_我是UNITY3D 打包成APK ,安装到手机上就直接报无法解析程序包。...
  20. office word复制图片出错

热门文章

  1. marvin java_Java开源图像处理框架Marvin介绍
  2. 无主之地2 不费子弹手枪
  3. 什么是深度学习,深度学习和机器学习有什么关系?
  4. 单片机实例3——多路开关状态指示(硬件电路图+汇编程序+C语言程序)
  5. 使用Vue_cli搭建SPA项目
  6. jyzy noip模拟赛5.22-2
  7. 名帖46 北魏 楷书《镇北大将军元思墓志》
  8. Map集合及三层嵌套
  9. Kinect能掀起体感应用开发热潮吗?
  10. Android webview登录手机QQ