前言

最近本来想写linux的 但是工作太忙一直腾不出手学习. 所以我打算最近出:
1.shiro 一个权限模块定制化很强的安全框架。
2. elasticSearch 全文检索, 分词分片.
3. Linux 身为java开发工程师不得不会的一个系统.
4.docker 自动化部署容器

2021-2-18 21.55: 俺食言了 具体听我狡辩一番:

linux当时我会了 当没来得及时间贴出来 因为要开始新项目了。。加班 。
docker 俺还不会 只知道他是个可以自动化部署的好东西. 最近学学 过年在家没得空调 手冷不想搞(就是懒)。
好了兄弟们
关于elasticsearch太简单了 我上次搞了一下…可能是我还是皮毛 但我们做项目的时候用的也是那些,暂没深入研究。入门还是比较简单。暂不出文章了.

最近二十天会记录上面所有内容和坑.

到时候我会将所有源码和坑分享出来, 以百度网盘zip的形势。

言归正传:

我们今天是来写用poi导入word文档的。 准备一个普通格式的文档.类似这样.
前端我就不贴了 无非就是选择一个文件然后上传到后台. 我这里只贴核心代码

word2003 和2007的区别就是 2003是doc结尾 2007是docx结尾


maven:

<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.15</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.15</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.15</version>
</dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.15</version>
</dependency>
public class TestImportWord {/*** * @param file*            文件绝对路径的文件* @throws DCPException *              全局异常* @throws IOException *              IO 异常* @remark *             读取word有表标题得表格* @return List<String>*/@SuppressWarnings("resource")static public void readWordTitleTable(String file) throws DCPException, IOException {FileInputStream in = null;POIFSFileSystem pfs = null;// word 2003if (file.endsWith(".doc") ||file.endsWith(".wps")) {try {in = new FileInputStream(file);pfs = new POIFSFileSystem(in);HWPFDocument hwpf = new HWPFDocument(pfs);Range range = hwpf.getRange();TableIterator it = new TableIterator(range);while (it.hasNext()) {Table tb = (Table) it.next();wordTableText.setTableName(String.valueOf(countTable++));int trCount = 0;for (int i = 0; i < tb.numRows(); i++) {TableRow tr = tb.getRow(i);for (int j = 0; j < tr.numCells(); j++) {String str = deleteSpace(tr.getCell(j).text().toString());;System.out.println(str);}}} catch (IOException e) {e.printStackTrace();} finally {assert pfs != null;pfs.close();in.close();}} else if (file.endsWith(".docx")) {readTitleCheck(file);} else {throw newException("不支持的文件");}}// word 2007@SuppressWarnings("resource")static private void readTitleCheck(String file) throws IOException {XWPFDocument document = new XWPFDocument(new FileInputStream(file));List<XWPFTable> tables = document.getTables();for (XWPFTable table : tables) {List<XWPFTableRow> rows = table.getRows();for (XWPFTableRow row : rows) {// 获取表格的每个单元格List<XWPFTableCell> tableCells = row.getTableCells();for (int i = 0; i < tableCells.size(); i++) {String str = deleteSpace(tableCells.get(i).getText());System.out.println(str);}}}}// 去除空格static private String deleteSpace(String tableStr) {tableStr = tableStr.replace("", "");StringBuilder replaceStr = new StringBuilder();if (tableStr.contains("\r")) {replaceStr = new StringBuilder(tableStr.replace("\r", ""));} else if (tableStr.contains("\t")) {replaceStr = new StringBuilder(tableStr.replace("\t", ""));} else if (tableStr.contains(" ")) {String [] str = tableStr.split(" ");for (String s : str) {replaceStr.append(s);}} else {replaceStr = new StringBuilder(tableStr);}return replaceStr.toString();}
}


poi读是有顺序的, 先读第一行第一列再是第一行第二列, 因此 只要我们word的表格是固定的, 我们就可以读出来存对象 再按比例分割, 然后我们就可以知道第一行第一列就是姓名头,第二行第一列就是姓名内容

/*** @remark 忽略空值* @param splitNum 按第几个分* @param list* @return 返回一个等比例的数组[[]]*/public static <T> List<List<T>> getSplitList(int splitNum, List<T> list) {List<List<T>> splitList = new java.util.LinkedList<>();int groupFlag = list.size() % splitNum == 0 ? (list.size() / splitNum) : (list.size() / splitNum + 1);for (int j = 1; j <= groupFlag; j++) {if ((j * splitNum) <= list.size()) {splitList.add(list.subList(j * splitNum - splitNum, j * splitNum));} else if ((j * splitNum) > list.size()) {splitList.add(list.subList(j * splitNum - splitNum, list.size()));}}return splitList;}

其他你就可以写你的业务逻辑了。

感谢阅读

至此 我们就结束了哦
2020-12-21 10: 48

java poi读取word 2003, 2007文档相关推荐

  1. java poi操作word 2003 2007

    实现java 替换 word中指定内容,实现word2003 版本 很轻松的 完成了,可是到2007版本时缺头疼了.因为在网上查找的很多相关例子都是需要删除哪一行的信息在setText 添加进去这样不 ...

  2. Word 2003 长篇文档排版技巧(二)

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  3. Word 2003 长篇文档排版技巧(一)

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  4. Word 2003 长篇文档排版技巧

    简介 市场部经常要出各种分析报告,一写就是洋洋洒洒几十页.文字功底深厚的小王写东西自然不在话下,然而每每困扰他的却是排版的问题,每次都要花大量的时间修改格式.制作目录和页眉页脚.最头疼的是上司看完报告 ...

  5. Java POI 读取word文件

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 1.读取word 2003及word 2007需要 ...

  6. java poi读取word中附件_java poi word读取

    用 poi 读取word文件 . 老是报错 org.apache.poi.poifs.filesystem.NotOLE2FileException: Invalid header signature ...

  7. java poi读取word中附件_java用poi实现对word读取和修改操作

    java编程要实现对word的操作没有vb那种编程语言来得容易,得借助一些开源组件,其中就包括jacob.poi等, 而poi应用得最为广泛,对word2003和2007的读和写word操作都十分方便 ...

  8. java poi读取word中附件_数据导出生成word附件使用POI的XWPFTemplate对象

    比较常用的实现Java导入.导出Excel的技术有两种Jakarta POI和Java Excel. Jakarta POI 是一套用于访问微软格式文档的Java API.Jakarta POI有很多 ...

  9. java poi读取word中附件_Java POI导入word, 带图片

    1.导入文件示例,word中简历表格模板 2.代码示例分两部分,一部分读取图片 /** * 导入word(基本信息,word格式) * @param staffId * @param baseInfo ...

最新文章

  1. 【爬坑】远程连接 MySQL 失败
  2. salesforce学习框架图
  3. python制作gif动画_实用的Python(2)利用Python制作gif动图
  4. oracle 创建表空间_Oracle 创建和管理表
  5. (转)Spring简介
  6. commons-pool2-2.3 jar包_Maven项目中引入net.sf.json.JSONObject依赖jar包
  7. 力扣-1791. 找出星型图的中心节点
  8. OpenCV之图像二值化
  9. c语言散列表的长度为11,2011数据结构C语言模拟试题及答案.doc
  10. 数据库索引:索引并不是万能药
  11. 【信息系统项目管理师】第十二十三章 项目采购合同管理(考点汇总篇)
  12. 计算机教室使用与管理制度,《计算机教室使用与管理制度》
  13. 苏爱华奋斗撒酒疯快乐到家斯卡拉减肥倒萨
  14. 闪送,为何能比顺丰送得更快?
  15. LabVIEW编程LabVIEW开发 旧程序升级维护
  16. java itextpdf 5 基础知识
  17. python网络爬虫网易云音乐_一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取...
  18. 【打卡-蓝桥杯】Day 7
  19. 让“猪场”名副其实的网易味央,是如何玩转“互联网+养猪”的?
  20. iOS Core Bluetooth_4 用作中央设备的常用方法(2/2)[swift实现]

热门文章

  1. 回看腾讯这些年(文末有感)
  2. php怎么改mp3,怎么把歌曲的格式改成mp3格式?
  3. 基于Qt的二维码生成器
  4. MySQL 根据某一个或者多个字段查找重复数据
  5. 3ds Max 2016 Biped 导出 FBX 到 Unity
  6. 时间序列分析——如何正确使用单位根检验(ADF)?
  7. VRTK4开发VR3:通过手柄进行移动
  8. C语言 读入中文文本文件txt乱码问题-应该设置为ANSI编码
  9. 藏身于stdio.h中的size_t
  10. msbuild 语法_MSBuild - Visual Studio | Microsoft Docs