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

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.总结

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

相关文章:

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

处理Word文档里的Excel表格数据 1.原始数据2.处理程序2.1 识别替换表格表头2.2 处理多余的换行符2.3 处理后的结果 3.总结 1.原始数据 Word 文档里的 Excel 表格数据&#xff0c;以下仅为示例数据&#xff1a; 读取后的字符串数据为&#xff1a; "姓名\r\n身份证号\r\n手…...

21、Tomato

难度 低(个人认为中) 目标 root权限 一个flag 使用VMware启动 kali 192.168.152.56 靶机 192.168.152.66 信息收集 端口信息收集 可以看到有个ftp服务&#xff0c;2211实际是ssh协议端口&#xff0c;80、8888是一个web服务 web测试 80端口显示一个tomato 查看源码给了一些…...

代码随想录 八股文训练营40天总结

参加训练营的话也是给自己一定的约束力&#xff0c;让自己能够定期去对八股文进行一个背诵&#xff0c;虽然说中间有几天放假&#xff0c;没有进行打卡外&#xff0c;还是比较完整的坚持下来了。 从计算机网络--操作系统--MySQL--Redis--C基础&#xff0c;虽然这些知识都有看过…...

Debian 12上安装google chrome

当前系统&#xff1a;Debian 12.7 昨天在Debian 12.7上安装Google Chrome时&#xff0c;可能由于网络原因&#xff0c;导入公钥始终失败。 导致无法正常使用命令#apt install google-chrome-stable来安装google chrome; 解决办法&#xff1a; Step1.下载当前google chrome稳…...

Python | Leetcode Python题解之第405题数字转换为十六进制数

题目&#xff1a; 题解&#xff1a; CONV "0123456789abcdef" class Solution:def toHex(self, num: int) -> str:ans []# 32位2进制数&#xff0c;转换成16进制 -> 4个一组&#xff0c;一共八组for _ in range(8):ans.append(num%16)num // 16if not num:b…...

定位坐标系

定位坐标系是地理空间信息系统中用于确定物体位置的重要工具&#xff0c;它基于数学和物理原理&#xff0c;通过一系列参数来描述物体在地球或其他天体表面的位置。以下是对定位坐标系的详细解析&#xff1a; 一、定义与分类 定位坐标系是根据一定的规则和方法&#xff0c;将…...

安全通信网络等保

通用要求 1.网络架构 1)应保证网络设备的业务处理能力满足业务高峰期需要。 设备CPU和内存使用率的峰值不大于设备处理能力的70%。 在有监控环境的条件下,应通过监控平台查看主要设备在业务高峰期的资源(CPU、内存等)使用 情况;在无监控环境的情况下,在业务高峰期登录…...

7--SpringBoot-后端开发、原理详解(面试高频提问点)

目录 SpringBoot原理 起步依赖 自动配置 配置优先级 Bean设置 获取Bean 第三方Bean SpringBoot原理 内容偏向于底层的原理分析 基于Spring框架进行项目的开发有两个不足的地方&#xff1a; 在pom.xml中依赖配置比较繁琐&#xff0c;在项目开发时&#xff0c;需要自己去找…...

wordpress主题摘要调用显示错误解决办法

如果你的wordpress主题使用了 mb_strimwidth(strip_tags(apply_filters(the_content, $post->post_content)), 0, 360, …); 这样的方式调用内容摘要 如果在主题摘要调用的地方显示错误&#xff0c;导致这个错误的原因是php没有开启&#xff1a;mbstring 开启mbstring的…...

【ESP32】ESP-IDF开发 | UART通用异步收发传输器+串口收发例程

1. 简介 UART可以说是开发者使用得最多的外设之一了&#xff0c;打印log几乎都是使用串口来实现的。UART是一种异步全双工的通信方式&#xff0c;异步传输的特性使得它仅需2根线就可以完成全双工的传输&#xff0c;但这也要求发送端和接收端的速率、停止位、奇偶校验位等都要相…...

2025秋招LLM大模型多模态面试题(六)-KV缓存

目录 为什么Transformer推理需要KV缓存?KV缓存的具体实现 没有缓存的情况下使用缓存的情况下KV缓存在解码中的阶段划分 Prefil阶段Decoding阶段KV缓存的存储类型及显存占用计算KV缓存的局限与优化策略 超长文本与复杂模型场景下的瓶颈量化方案的应用量化方案的副作用与优化方法…...

matlab边缘点提取函数

1、边缘提取 matlab自带点云边缘提取函数,用于搜索点云边界,其核心是alpha shapes算法。alpha shapes提取边缘点,主要是依据滚动圆绕点云进行旋转,实现边缘检测,原理如下图所示。具体原理及效果,可以参考之前我写的博客:基于alpha shapes的边缘点提取(matlab)-CSDN博客…...

Redis 执行 Lua,能保证原子性吗?

前言 小张目前在使用分布式锁 Redisson 实现一个需求。那我在想我能否自己手撸一个能用于分布式环境的锁呢&#xff1f;于是果然尝试。 历经一天后&#xff0c;小张手撸的锁终于写出来了&#xff0c;再次给各位看看&#xff0c;看给位有没有什么优化的建议&#xff1a; // 加…...

让模型评估模型:构建双代理RAG评估系统的步骤解析

在当前大语言模型(LLM)应用开发的背景下,一个关键问题是如何评估模型输出的准确性。我们需要确定哪些评估指标能够有效衡量提示(prompt)的效果,以及在多大程度上需要对提示进行优化。 为解决这一问题,我们将介绍一个基于双代理的RAG(检索增强生成)评估系统。该系统使用生成代理…...

RabbitMQ 高级特性——发送方确认

文章目录 前言发送方确认confirm 确认模式return 退回模式 常见面试题 前言 前面我们学习了 RabbitMQ 中交换机、队列和消息的持久化&#xff0c;这样能够保证存储在 RabbitMQ Broker 中的交换机和队列中的消息实现持久化&#xff0c;就算 RabbitMQ 服务发生了重启或者是宕机&…...

马踏棋盘c++

马踏棋盘c 题目回溯问题模型特征模型 代码 题目 马踏棋盘算法&#xff0c;即骑士周游问题。将马放在国际象棋的 88 棋盘的某个方格中&#xff0c;马按走棋规则(马走日字)进行移动。每个方格只进入一次&#xff0c;走遍棋盘上全部 64 个方格。 回溯问题模型 特征 解组织成树…...

OpenSSH从7.4升级到9.8的过程 亲测--图文详解

一、下载软件 下载openssh 下载地址&#xff1a; Downloads | Library 下载openssl Index of /pub/OpenBSD/OpenSSH/ zlib Home Site 安装的 openssl-3.3.1.tar.gz ,安装3.3.2有问题 安装有问题&#xff0c; 二、安装依赖 yum install -y perl-CPAN perl-ExtUtils-CB…...

系统分析与设计

一、结构化方法 生命周期&#xff1a;结构化分析、结构化设计、结构化编程 原则&#xff1a;程序 算法 数据结构 1、结构化分析&#xff1a;数据流图和数据字典 2、结构化设计&#xff1a; 1&#xff09;模块结构&#xff1a;信息隐藏与抽象、模块化、低耦合高内聚 2&…...

vite 使用飞行器仪表示例

这里写自定义目录标题 环境vue代码效果图 环境 jquery npm install -S jqueryjQuery-Flight-Indicators 将img、css、js拷贝到vite工程目录中 打开 jquery.flightindicators.js&#xff0c;在文件开头加上import jQuery from "jquery"; vue代码 <template>&…...

【隐私计算】Cheetah安全多方计算协议-阿里安全双子座实验室

2PC-NN安全推理与实际应用之间仍存在较大性能差距&#xff0c;因此只适用于小数据集或简单模型。Cheetah仔细设计DNN&#xff0c;基于格的同态加密、VOLE类型的不经意传输和秘密共享&#xff0c;提出了一个2PC-NN推理系统Cheetah&#xff0c;比CCS20的CrypTFlow2开销小的多&…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术&#xff0c;它们扮演着完全不同的角色&#xff1a; Redis: 内存数据库/数据结构存储 本质&#xff1a; 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能&#xff1a; 提供丰…...