java使用poi解析word表格,把数据入库

这篇具有很好参考价值的文章主要介绍了java使用poi解析word表格,把数据入库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

77、java解析word表格,把数据入库
使用poi来解析word内容
    
     /**
     * 解析word doc   实测可以
     *
     * @param file
     * @return
     * @author LZH
     * @date 2023/3/24 15:50:06
     * @version 1.0
     */
public Result<?> analysisWord(MultipartFile file, HttpServletRequest request) throws Exception {
        AjCaseInfoDto aj = new AjCaseInfoDto();
        InputStream inputStream = file.getInputStream();
//        解析内容 doc 文档
        HWPFDocument document = new HWPFDocument(inputStream);
//        获取文档的范围
        Range range = document.getRange();
//        迭代文档中的表格
        TableIterator it = new TableIterator(range);
        String info = "";
        String cellString = "";
        if (it.hasNext()){
            TableRow tr = null;
            TableCell td = null;
            Paragraph para = null;
            Table tb = it.next();
            for (int i = 0; i < tb.numRows(); i++) {
                tr = tb.getRow(i);
                for (int j = 0; j < tr.numCells(); j++) {
                    int totalrow = tr.numCells();
                    td = tr.getCell(j);// 取得单元格
                    // 取得单元格的内容
                    cellString = td.text();
                    boolean flag = true;
                    if (cellString != null && cellString.compareTo("") != 0 && flag == true) {
                        // 如果不trim,取出的内容后会有一个乱码字符
                        cellString = cellString.trim().replaceAll("\\s*", "");
                    }
                    if ("填报单位:".equals(cellString)) {
                        String content = tr.getCell(++j).text().trim().replaceAll("\\s*", "");
                        if (ObjectUtil.isNotEmpty(content))
                        aj.setReportDepart(content);
                    }if ("填报日期:".equals(cellString)) {
                        String content = tr.getCell(++j).text().trim().replaceAll("\\s*", "");
                        if (ObjectUtil.isNotEmpty(content))
                        aj.setReportTime(parseDateString(content));
                    } else if ("案件编码".equals(cellString)) {
                        String content = tr.getCell(++j).text().trim().replaceAll("\\s*", "");
                        if (ObjectUtil.isNotEmpty(content))
                        aj.setCaseCode(content);
                    } else if ("涉案人员编码".equals(cellString)) {
                        String content = tr.getCell(++j).text().trim().replaceAll("\\s*", "");
                        if (ObjectUtil.isNotEmpty(content))
                        aj.setInvolvedPersonCode(content);
                    }
                 }
            }
        }
    //数据入库
    this.addOne(aj);
}

    /**
     * 解析word docx
     *
     * @param file
     * @return
     * @author LZH
     * @date 2023/3/24 15:50:06
     * @version 1.0
     */
public Result<?> analysisWord(MultipartFile file, HttpServletRequest request) throws Exception {
        AjCaseInfoDto aj = new AjCaseInfoDto();
        XWPFDocument doc = new XWPFDocument(is);
        List<XWPFParagraph> paras = doc.getParagraphs();
        List<XWPFRun> runs = paras.get(0).getRuns();
        for (int i = 0; i < runs.size(); i++) {
            runs.get(i);
        }
        for (XWPFRun run : runs) {
            String text = run.getText(0);
        }
        for (XWPFParagraph para : paras) {//当前段落的属性
            String text = para.getText();
        }
        List tables = doc.getTables();
        XWPFTable xwpf = (XWPFTable) tables.get(0);
        String text = xwpf.getText();
        CTTblPr pr = xwpf.getCTTbl().getTblPr();
        List<XWPFTableRow> rows = xwpf.getRows();
        for (XWPFTableRow row : rows) {
            List<XWPFTableCell> tableCells = row.getTableCells();
            for (int i = 0; i < tableCells.size(); i++) {
                if (tableCells.get(i).getText().equals("填报单位:")) {
                    aj.setReportDepart(tableCells.get(++i).getText());
                } else if (tableCells.get(i).getText().equals("填报日期:")) {
                    aj.setReportTime(tableCells.get(++i).getText());
                } else if (tableCells.get(i).getText().equals("案件编码")) {
                    aj.setCaseCode(tableCells.get(++i).getText());
                } else if (tableCells.get(i).getText().equals("涉案人员编码")) {
                    aj.setInvolvedPersonCode(tableCells.get(++i).getText());
                } 
            }
        }
    //数据入库
    this.addOne(aj);
}

  /**
     * 格式化date
     *
     * @param date
     * @return
     * @author LZH
     * @date 2023/3/27 18:28:55
     * @version 1.0
     */
    Date parseDateString(String date){
        if (date.contains("/"))
            date = date.replace("/","-");
        if (ObjectUtil.isNotEmpty(date)){
            if (date.length()>7){
                return DateUtil.parse(date,"yyyy-MM-dd");
            }else {
                String[] arr = new String[0];
                if (date.contains("-")){
                    arr = date.split("-");
                }
                if (arr.length > 1){
//					年份--月份
                    if (!arr[1].contains("0") && arr[1].length() == 1)
                        date = arr[0]+"-0"+arr[1];
                    return DateUtil.parse(date,"yyyy-MM");
                }else {
//					年份
                    return DateUtil.parse(date,"yyyy");
                }

            }
        }
        return null;
    }

文章来源地址https://www.toymoban.com/news/detail-406233.html

到了这里,关于java使用poi解析word表格,把数据入库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java使用poi-tl生成word模板-动态数据列表

    Java使用poi-tl生成word模板-动态数据列表 第一步,添加poi-tl的依赖 第二步,准备word模板文件             模板中文本信息可以用    {{  }}   标签指定             例如在word文档中写入:{{var}} //会将word文档中的对位置的标签替换为map中的数据             模板

    2024年02月14日
    浏览(53)
  • Java 使用 poi 和 aspose 实现 word 模板数据写入并转换 pdf 增加水印

    本项目所有源码和依赖资源都在文章顶部链接,有需要可以下载使用 1. 需求描述 从指定位置读取一个 word 模板 获取业务数据并写入该 word 模板,生成新的 word 文档 将新生成的 word 文档转换为 pdf 格式 对 pdf 文档添加水印 2. 效果预览 word 模板 带水印的 pdf 文档 3. 实现思路

    2024年02月08日
    浏览(46)
  • JAVA使用POI对Word docx模板文件替换数据工具类并通过浏览器下载到本地

    需求:需要上传一个带有占位符的模板至数据库保存,然后解析模板的占位符,通过类计算结果替换模板中的占位符,并且保存至本地 难点:1.由于我数据库保存是本地保存,并没有path 所以获取模板的path是个难点 2.如何使用计算类,由于我的类是和占位符绑定的,什么样的

    2024年02月16日
    浏览(48)
  • poi-tl导出word复杂表格(单元格合并,生成复杂表格)

    官方文档地址:http://deepoove.com/poi-tl/ 源码地址:https://github.com/Sayi/poi-tl poi-tl(poi template language)是Word模板引擎,使用Word模板和数据创建很棒的Word文档。 最近在做项目时候有一个关于导出Word的文件的需求,需要导出的word文件较大,并且格式比较复杂,使用poi-tl可以很好的

    2024年02月16日
    浏览(49)
  • java使用apache.poi导出word文件

    功能说明: 将试卷导出word,并可以打印,装订,效果图: 下面是实现代码:

    2024年02月15日
    浏览(49)
  • java中使用POI将word转为PDF时无法显示文字

    背景: 在windos上本地调试时使用POI将word转为PDF时, PDF无法显示文字的原因以及解决方案: 原因1 :字体不存在问题, word中使用的字体在系统(windows或者linux)上一定要已经安装, 否则PDF无法显示文字, 将需要的字体下载下来, 复制到 1) windows 的 C:WindowsFonts 文件夹下面, 然后重启机器

    2023年04月10日
    浏览(87)
  • java 使用POI-TL根据word模版,生成word文件,含图片,富文本。

    1.引入mavna坐标` 2 .poi-tl-ext插件主要用于富文本内容格式在word展现 3.word模版创建 3.具体代码实现 4.本文的miniourl路径实质为网络路径的文件。

    2024年02月16日
    浏览(68)
  • Apache POI 解析复杂的excel表格

    一:场景说明        最近接到一个需求,让我解析Excel表。这要是简单常规的Excel表,那我还能摸一摸鱼给他整出来,主要是给我的Excel表长得跟下图中的Excel表一样复杂难搞,这可把我难倒了。于是开启了我的百度之旅,有可能是我不会百度或者理解能力太差,反正就是

    2024年02月04日
    浏览(42)
  • Java使用poi-tl1.9.1生成Word文档的几个小技巧

    目录 前言 一、poi-tl简介 1、什么是poi-tl 2、常见的word生成对比 3、poi-tl功能点 二、poi-tl文档生成 1、模板准备 2、目标参数填充 3、生成效果  三、可能会遇到的问题 1、混合图表生成报错 2、图表参数设置技巧  总结         也许在您的工作当中会碰到如下的一些场景,比

    2024年02月16日
    浏览(52)
  • java使用poi-tl导出word及转换PDF后的合并导出pdf

    为某单位开发的一款项目申报审批系统,用户需求在申报阶段填写的信息资料能够导出PDF。且项目申报的报告正文为用户上传,所以需要合并导出。 在项目初期阶段使用的是PDF的预设模板导出,因为以前使用过,比较熟悉。所以优先选择此方法,但项目测试阶段发现问题,因

    2024年02月06日
    浏览(82)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包