返回顶部
首页 > 资讯 > 后端开发 > Python >Java 如何将表格数据导入word文档中
  • 856
分享到

Java 如何将表格数据导入word文档中

2024-04-02 19:04:59 856人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

Java 表格数据导入Word文档中 个人觉得这个功能实在搞笑,没什么意义,没办法提了需求就要实现,(太好说话了把我) 我的实现是再word中生成一个与 excel行,列 一样的一个

Java 表格数据导入Word文档中

个人觉得这个功能实在搞笑,没什么意义,没办法提了需求就要实现,(太好说话了把我)

我的实现是再word中生成一个与 excel行,列 一样的一个表格,然后把从excel拿到的数据(exList参数)依次放到word表格中


    public static void createFile(httpservletResponse response, String fileName, List<List<String>> exList) {
  
        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<String> 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中可以获取每行的列数,不正确的证明此列有问题,舍弃跳过。

二、代码


<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.17</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.17</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-scratchpad</artifactId>
            <version>3.17</version>
        </dependency>

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 List<TableColumn> testReadByDoc(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<TableColumn> tableColumns = this.readTable(range);
        //读列表
        //  this.readList(range);
        //把当前HWPFDocument写到输出流中
        // doc.write(new FileOutputStream("D:\\temp\\test.doc"));
        is.close();
        return tableColumns;
    }
 
    
    private void printInfo(Bookmarks bookmarks) {
        int count = bookmarks.getBookmarksCount();
        System.out.println("书签数量:" + count);
        Bookmark bookmark;
        for (int i=0; i<count; i++) {
            bookmark = bookmarks.getBookmark(i);
            System.out.println("书签" + (i+1) + "的名称是:" + bookmark.getName());
            System.out.println("开始位置:" + bookmark.getStart());
            System.out.println("结束位置:" + bookmark.getEnd());
        }
    }
 
    
    private List<TableColumn> readTable(Range range) {
        List<TableColumn> 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<rowNum; j++) {
                TableColumn tableColumn = new TableColumn();
                row = table.getRow(j);
                int cellNum = row.numCells();
//                for (int k=0; k<cellNum; k++) {
//                    cell = row.getCell(k, Row.MissinGCellPolicy.CREATE_NULL_AS_BLANK);
//
//                    //输出单元格的文本
//                    System.out.println(cell.text().trim());
//                }
                k++;
                if(12==cellNum){
                    tableColumn.setId(row.getCell(0).text().trim());
                    tableColumn.setSscj(row.getCell(1).text().trim());
                    tableColumn.setQlfl(row.getCell(2).text().trim());
                    tableColumn.setXmmc(row.getCell(3).text().trim());
                    tableColumn.setZx(row.getCell(4).text().trim());
                    tableColumn.setBlx(row.getCell(5).text().trim());
                    tableColumn.setSsyj(row.getCell(6).text().trim());
                    tableColumn.setCbjg(row.getCell(7).text().trim());
                    tableColumn.setZrsx(row.getCell(8).text().trim());
                    tableColumn.setSxyj(row.getCell(9).text().trim());
                    tableColumn.setZzqx(row.getCell(10).text().trim());
                    tableColumn.setZzyj(row.getCell(11).text().trim());
//                tableColumn.setBz(row.getCell(12).text().trim());
                    tableColumns.add(tableColumn);
  
                    if(679==k){
                        System.out.println(k  +" " +row.getCell(0).text().trim()+" " +row.getCell(3).text().trim());
                    }
//                    System.out.println(k +" " +row.getCell(0).text().trim()+" "+row.getCell(3).text().trim());
                }else {
                    System.out.println(k);
                }
 
            }
            i++;
        }
        return tableColumns;
    }
 
    
    private void readList(Range range) {
        int num = range.numParagraphs();
        Paragraph para;
        for (int i=0; i<num; i++) {
            para = range.getParagraph(i);
            if (para.isInList()) {
                System.out.println("list: " + para.text());
            }
        }
    }
 
    
    private void printInfo(Range range) {
        //获取段落数
        int paraNum = range.numParagraphs();
        System.out.println(paraNum);
        for (int i=0; i<paraNum; i++) {
            System.out.println("段落" + (i+1) + ":" + range.getParagraph(i).text());
        }
        int secNum = range.numSections();
        System.out.println(secNum);
        Section section;
        for (int i=0; i<secNum; i++) {
            section = range.getSection(i);
            System.out.println(section.getMarginLeft());
            System.out.println(section.getMarginRight());
            System.out.println(section.getMarginTop());
            System.out.println(section.getMarginBottom());
            System.out.println(section.getPageHeight());
            System.out.println(section.text());
        }
    }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: Java 如何将表格数据导入word文档中

本文链接: https://lsjlt.com/news/128521.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java 如何将表格数据导入word文档中
    Java 表格数据导入word文档中 个人觉得这个功能实在搞笑,没什么意义,没办法提了需求就要实现,(太好说话了把我) 我的实现是再word中生成一个与 excel行,列 一样的一个...
    99+
    2024-04-02
  • word文档中如何插入表格
    word文档插入表格的方法:1、打开Word文档,择新创建一个文档,或者打开一个已有的文档;2、将光标定位在你想要插入表格的位置;3、选择插入表格的方式,使用插入菜单中的表格选项;4、调整表格大小和样式,一旦表格插入到文档中,可以对其进行调...
    99+
    2023-08-07
  • java如何读取word文档表格内容
    要读取Word文档中的表格内容,可以使用Apache POI库来处理Word文档。以下是一个简单的示例代码,演示如何读取Word文档...
    99+
    2023-09-22
    java word
  • Java实现将导出带格式的Excel数据到Word表格
    在Word中制作报表时,我们经常需要将Excel中的数据复制粘贴到Word中,这样则可以直接在Word文档中查看数据而无需打开另一个Excel文件。但是如果表格比较长,内容就会存在一...
    99+
    2022-11-16
    Java导出Excel数据到Word Java导出Excel数据 Java 导出数据
  • 如何在word文档里做表格
    在Word文档中创建表格,可以按照以下步骤进行操作:1. 打开Word文档,并将光标移动到您希望插入表格的位置。2. 在菜单栏的“插...
    99+
    2023-09-29
    word
  • python读取word文档表格里的数据
    首先需要安装相应的支持库: 直接在命令行执行pip install python-docx 示例代码如下: import docx from docx import Document #导入库 path = "E:\\pyt...
    99+
    2023-01-31
    表格 文档 数据
  • word文档表格上方如何添加文字
    要在Word文档表格上方添加文字,可以使用以下几种方法:1. 使用表格上面的一行进行添加:- 在表格上方的一行插入一个行,可以通过在...
    99+
    2023-09-08
    word
  • PHP如何将MySQL中数据导入表单
    要将MySQL中的数据导入到表单中,可以使用PHP和MySQL的组合来实现。以下是一个简单的例子: 首先,创建一个连接到MySQL...
    99+
    2024-04-09
    PHP MySQL
  • 如何将数据表导入phpmyadmin数据库
    小编给大家分享一下如何将数据表导入phpmyadmin数据库,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!导入数据表:先选择数据...
    99+
    2024-04-02
  • Python如何实现将Word表格嵌入到Excel中
    这篇文章给大家介绍Python如何实现将Word表格嵌入到Excel中,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。其实就是把Word中的表格转到Excel中,顺便做一个调整。这个需求在实际工作中,很多人还是经常碰到的...
    99+
    2023-06-22
  • Java如何将Excel数据导入数据库
    这篇文章给大家分享的是有关Java如何将Excel数据导入数据库的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、根据业务需求设计数据库表2、根据数据库表设计一个Excel模板模板的每列属性必须与表字段一一对应3...
    99+
    2023-06-29
  • 图文详解如何在navicat中导入excel表格数据
    目录基础操作篇1. 首先打开navicat 软件,进入后打开连接2. 进入后选择新建数据库3. 数据库名随便输入一个,字符集选择 utf8,排序规则选择utf8_general_ci...
    99+
    2023-02-28
    navicat导入excel表格 navicat导入excel navicat导入数据
  • php如何将数据导出成excel表格
    小编给大家分享一下php如何将数据导出成excel表格,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!php有什么用php是一个嵌套的缩写名称,是英文超级文本预处理...
    99+
    2023-06-14
  • 腾讯文档如何导出excel表格
    这篇文章主要讲解了“腾讯文档如何导出excel表格”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“腾讯文档如何导出excel表格”吧!腾讯文档导出excel表格教程 找到并选择想要转...
    99+
    2023-07-01
  • Java项目中如何将Excel文件从数据库导入与导出
    本篇文章给大家分享的是有关Java项目中如何将Excel文件从数据库导入与导出,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。ExcellToObjectUtil 类主要功能是讲...
    99+
    2023-05-31
    java excel 数据库
  • 如何将sql文件导入数据库
    要将SQL文件导入数据库,可以使用以下几种方法:1. 使用命令行工具:- 打开命令行工具,进入到安装了数据库的目录下的bin文件夹。...
    99+
    2023-09-23
    数据库
  • 利用Java怎么将excel表格批量导入到数据库
    本篇文章给大家分享的是有关利用Java怎么将excel表格批量导入到数据库,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。创建导入抽象类package com.gclo...
    99+
    2023-05-30
    java excel 数据库
  • java中如何导入数据
    在Java中,可以使用以下几种方式导入数据:1. 使用Scanner类从用户输入中导入数据。首先需要导入java.util.Scan...
    99+
    2023-09-15
    java
  • Vue2.0如何实现将页面中表格数据导出excel
    小编给大家分享一下Vue2.0如何实现将页面中表格数据导出excel,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!项目中将后台返回的数据v-for到表格中,然后需要将这个表格导出为EXCE...
    99+
    2024-04-02
  • C#中如何使用NPOI将List数据导出到Excel文档
    今天小编给大家分享一下C#中如何使用NPOI将List数据导出到Excel文档的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作