Java|Java 如何将表格数据导入word文档中
Java 表格数据导入word文档中
个人觉得这个功能实在搞笑,没什么意义,没办法提了需求就要实现,(太好说话了把我)
我的实现是再word中生成一个与 excel行,列 一样的一个表格,然后把从excel拿到的数据(exList参数)依次放到word表格中
public static void createFile(HttpServletResponse response, String fileName, ListexList) {try {setResponseHeader(response, fileName); //生成一个word模版文件XWPFDocument document = new XWPFDocument(); XWPFTable table = document.createTable(exList.size(), exList.get(0).size()); XWPFTableRow row; for (int i = 0; i < exList.size(); i++) { List sdf = exList.get(i); row = table.getRow(i); for (int j = 0; j < exList.get(i).size(); j++) {String s =sdf.get(j); row.getCell(j).setText(s); row.getCell(j).setWidthType(TableWidthType.AUTO); }//将数据插入表格中pos:0 表示 第一个表格document.setTable(0,table); }ServletOutputStream outputStream = response.getOutputStream(); BufferedOutputStream bufferStream = new BufferedOutputStream(outputStream, 1024); document.write(bufferStream); document.close(); bufferStream.close(); ; } catch (IOException e) {e.printStackTrace(); }}public static void setResponseHeader(HttpServletResponse response, String name) {try {name = new String(name.getBytes(), "ISO8859-1"); } catch (UnsupportedEncodingException e) {e.printStackTrace(); } response.setContentType("multipart/form-data"); //要保存的文件名response.setHeader("Content-Disposition", "attachment; filename=" + name + ".docx"); response.addHeader("Pargam", "no-cache"); response.addHeader("Cache-Control", "no-cache"); }
Java poi导入word表格数据的经过 一、过程及遇到的问题和解决思路
需要导入的是一个word文档,内容是以表格的形式保存在word中
1、poi对word表格的空格处可以自动识别出来并赋值为 " ",这一点比poi导入excel人性化(excel默认是跳过这个空格)
2、对于某些情况下,肉眼无法看出表格格式问题,但是程序可以识别出来,怀疑是表格后期人工修改过,导致表格外观没问题但是行列属性不一致,导致读取时遇到这些地方报错,解决思路:可以在读取每一行之前先判断列数是否正确,poi中可以获取每行的列数,不正确的证明此列有问题,舍弃跳过。
二、代码
org.apache.poi poi3.17 org.apache.poi poi-ooxml3.17 org.apache.poi poi-scratchpad3.17
package com.example.importtomysql; import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.usermodel.*; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.List; public class ImportWord {public ListtestReadByDoc(String path) throws Exception {File f = new File(path); InputStream is = new FileInputStream(f); HWPFDocument doc = new HWPFDocument(is); //输出书签信息//this.printInfo(doc.getBookmarks()); //输出文本//System.out.println(doc.getDocumentText()); Range range = doc.getRange(); //this.printInfo(range); //读表格List tableColumns = this.readTable(range); //读列表//this.readList(range); //把当前HWPFDocument写到输出流中// doc.write(new FileOutputStream("D:\\temp\\test.doc")); is.close(); return tableColumns; } /*** 输出书签信息* @param bookmarks*/private void printInfo(Bookmarks bookmarks) {int count = bookmarks.getBookmarksCount(); System.out.println("书签数量:" + count); Bookmark bookmark; for (int i=0; i readTable(Range range) {List tableColumns = new ArrayList<>(); //遍历range范围内的table。TableIterator tableIter = new TableIterator(range); Table table; TableRow row; TableCell cell; int i=0; int k=0; while (tableIter.hasNext()&&i<=1) { table = tableIter.next(); int rowNum = table.numRows(); for (int j=0; j 【Java|Java 如何将表格数据导入word文档中】以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 如何寻找情感问答App的分析切入点
- 即将到手三百万
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus使用queryWrapper如何实现复杂查询
- 事件代理
- 思友人
- Java|Java OpenCV图像处理之SIFT角点检测详解
- 如何在Mac中的文件选择框中打开系统隐藏文件夹