当前位置: 首页 > article >正文

Java【代码 18】处理Word文档里的Excel表格数据(源码分享)

处理Word文档里的Excel表格数据

  • 1.原始数据
  • 2.处理程序
    • 2.1 识别替换表格表头
    • 2.2 处理多余的换行符
    • 2.3 处理后的结果
  • 3.总结

1.原始数据

Word 文档里的 Excel 表格数据,以下仅为示例数据:

读取后的字符串数据为:

"姓名\r\n身份证号\r\n手机号\r\n户籍地\r\n张三丰\r\n411381198909092222\r\n15713862222\r\n河南郑州\r\n李四方\r\n411381198909093333\r\n15713863333\r\n河南新乡\r\n王五福\r\n411381198909095555\r\n15713865555\r\n河南安阳\r\n"

每个字段都有换行:

姓名
身份证号
手机号
户籍地
张三丰
411381198909092222
15713862222
河南郑州
李四方
411381198909093333
15713863333
河南新乡
王五福
411381198909095555
15713865555
河南安阳

2.处理程序

2.1 识别替换表格表头

首先要定位表格数据的开始和结束,示例中的 sonString表格前面有一些数据,表格的后面就没有数据了【要注意这点儿】。

    /**
     * 处理包含表格的正文字符串
     *
     * @param sonString 正文字符串
     * @return 处理后的正文字符串
     */
    private String deal(String sonString) {
        // 1.判断是否存在表格固定表头
        boolean contains = sonString.contains("姓名\r\n身份证号\r\n手机号\r\n户籍地\r\n");
        if (contains) {
            String headerStr = "姓名,身份证号,手机号,户籍地\r\n";
            // 2.将换行数据处理为一行数据
            sonString = sonString.replace("姓名\r\n身份证号\r\n手机号\r\n户籍地\r\n", headerStr);
            // 3.处理表格数据
            int headerIndex = sonString.indexOf(headerStr);
            String personInfoStr = sonString.substring(headerIndex + headerStr.length());
            // 4.处理人员信息
            String personInfo = dealPersonInfoStr(personInfoStr);
            // 5.替换原有数据
            sonString = sonString.replace(personInfoStr, personInfo);
        }
        return sonString;
    }

2.2 处理多余的换行符

    /**
     * 处理每行数据里多余的换行符
     *
     * @param personInfoStr 人员信息
     * @return 处理后的人员信息
     */
    private String dealPersonInfoStr(String personInfoStr) {
        int infoLength = 4;
        String[] infoArr = personInfoStr.split("\r\n");
        StringBuilder personInfo = new StringBuilder();
        for (int i = 1; i < infoArr.length + 1; i++) {
            if (i % infoLength == 0) {
                personInfo.append(infoArr[i - 1]).append("\r\n");
            } else {
                personInfo.append(infoArr[i - 1]).append(",");
            }
        }
        return personInfo.toString();
    }

2.3 处理后的结果

"姓名,身份证号,手机号,户籍地\r\n张三丰,411381198909092222,15713862222,河南郑州\r\n李四方,411381198909093333,15713863333,河南新乡\r\n王五福,411381198909095555,15713865555,河南安阳\r\n"
姓名,身份证号,手机号,户籍地
张三丰,411381198909092222,15713862222,河南郑州
李四方,411381198909093333,15713863333,河南新乡
王五福,411381198909095555,15713865555,河南安阳

3.总结

  • 代码是根据固定表头进行的处理,表头信息可以进行配置;
  • 需要定位表格数据。

http://www.kler.cn/a/312753.html

相关文章:

  • Chromium 中sqlite数据库操作演示c++
  • redis实现消息队列的几种方式
  • leetcode206. Reverse Linked List
  • 工业通信协议对比:OPC-UA、Modbus、MQTT、HTTP
  • docker compose 多个 Dockerfile
  • uniapp的基本使用(easycom规范和条件编译)和uview组件的安装和使用
  • 【系统架构设计师-2013年真题】案例分析-答案及详解
  • Leetcode 和为 K 的子数组
  • 【深度学习 Transformer VIT】Transformer VIT:拆解“视觉变形金刚”,笑谈技术细节
  • 【Android源码】屏蔽系统通知出现在系统栏中
  • C++速通LeetCode中等第7题-和为K的子数组(巧用前缀和)
  • 视频服务器:GB28181网络视频协议
  • python使用argparse解析命令行,如何正确传入科学计数法形式的浮点数
  • 力扣100题——杂题
  • Java集合(一)
  • C++ 文件操作
  • 十、数字人IP应用方案
  • chromedriver下载与安装方法
  • react之jsx基础(2)高频使用场景
  • DEPLOT: One-shot visual language reasoning by plot-to-table translation论文阅读
  • Android14请求动态申请存储权限
  • WGCAT工单系统 v1.2.1 支持导出PDF和分享创建工单功能
  • JAVA 根据开始和结束ip,计算中间的所有ip
  • 【MySQL】MySQL和Workbench版本兼容问题
  • 力扣每日一题 公交站间的距离
  • 远程访问NAS速度慢??那是因为你没用对。。。