使用Java读取Word表格数据封装到实体类中

1·、引入pom文件:

<!--    POI--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.3</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>5.2.3</version></dependency>

2、写一个实体类Table1

@Data
public class Table1 {private String name;private String age;private String high;private String edBackground;
}

3、进行简单输出每一行和每一列数据

   public static void main(String[] args) {
//使用java代码读取Word表格数据,封装到user实体类中try {XWPFDocument document = new XWPFDocument(new FileInputStream("d:/test12.docx"));// 获取所有表格List<XWPFTable> tables = document.getTables();// 遍历每个表格for (XWPFTable table : tables) {// 读取表格每一行table.getRows().forEach(row -> {// 读取每行的每个单元格row.getTableCells().forEach(cell -> {// 获取单元格文本String text = cell.getText();System.out.print(text + "\t");});System.out.println();});}} catch (Exception e) {e.printStackTrace();}}

4、输出的数据进行封装到实体中。docx 类型

       public static void main(String[] args) {//使用java代码读取Word表格数据,封装到user实体类中try {/*docx文件将表格输出。*/XWPFDocument document = new XWPFDocument(new FileInputStream("d:/test12.docx"));System.out.println("=====>" + document.getTables());// 获取所有表格List<XWPFTable> tables = document.getTables();/*** 遍历Word中所有表格。将表格中的数据进行输出。*///遍历所有表for (XWPFTable table : tables) {System.out.println(table.getText());System.out.println("------------------------>");//获取Word表格中的第二行。====>数据。 第一行为字段名,第二行字段名的值List<XWPFTableCell> tableCells1 = table.getRows().get(1).getTableCells();Table1 table11 = new Table1();//将读取的值进行记录。String data = "";//遍历第二行的每一列for (int i = 0; i < tableCells1.size(); i++) {System.out.println("=获取数据===" + tableCells1.get(i).getText());System.out.println("------------------------>");//最后一个不用添加 逗号分割if (i + 1 == tableCells1.size()) {data += tableCells1.get(i).getText();} else {//全部放到一个list中使用,进行分割data += tableCells1.get(i).getText() + ",";}}//输出System.out.println("data======>" + data);//将data进行分割以逗号进行隔开String[] split = data.split(",");table11.setName(split[0]);table11.setAge(split[1]);table11.setHigh(split[2]);table11.setEdBackground(split[3]);System.out.println("打印table11====》" + table11);} catch (Exception e) {e.printStackTrace();}}

5、输出的数据进行封装到实体中。doc 类型

    public static void main(String[] args) {//使用java代码读取Word表格数据,封装到user实体类中try {FileInputStream fis = new FileInputStream(("d:/test.doc"));HWPFDocument hwpfDocument = new HWPFDocument(fis);//遍历表格TableIterator tableIterator = new TableIterator(hwpfDocument.getRange());while (tableIterator.hasNext()){Table table = tableIterator.next();System.out.println("获取table的所有内容=====>"+table.text());System.out.println("获取table 一共有这么多行=====>"+table.numRows());
//                for (int i = 0; i <table.numRows() ; i++) {TableRow row = table.getRow(1);String data="";for (int j = 0; j < row.numCells(); j++) {//获取每一列的值TableCell cell = row.getCell(j);//如果存在  字符去掉String tableText = cell.text().replaceAll("\u0007", "");//判断是否为最后一列if (j+1!=row.numCells()){data+=tableText+",";}else {data+=tableText;}}System.out.println("第data的值===》"+data);String[] split = data.split(",");//往实体类中进行赋值操作Table1 table1 = new Table1();table1.setName(split[0]);table1.setAge(split[1]);table1.setHigh(split[2]);table1.setEdBackground(split[3]);System.out.println("第table1===》"+table1);}
//            }} catch (Exception e) {e.printStackTrace();}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/16692.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简述对于Vue的diff算法理解

Vue 的 diff 算法&#xff0c;也称为“虚拟 DOM 的差异算法”或“Reactivity System”&#xff0c;是 Vue.js 框架中一个核心且高效的部分&#xff0c;它允许 Vue 在不需要重新渲染整个 DOM 的情况下&#xff0c;通过最小化地更新 DOM 来实现视图更新。以下是关于 Vue diff 算法…

5.4 Go 匿名函数与闭包

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

ASO优化0基础关键词应用指导

很多人还在为如何推广App而头疼&#xff0c;小柚肯定的告诉你。ASO优化是目前App推广中最基础的办法&#xff0c;是不可或缺的一个环节。ASO优化内容包括关键词、应用描述、评论等。关键词一般分为行业通用词、品牌词、竞品词等&#xff0c;优化师利用专业的ASO工具提供查询。为…

网站笔记:huggingface——can you run it?

Can You Run It? LLM version - a Hugging Face Space by Vokturz 1 配置设置部分 Model Name就是需要测量的模型名称 GPU Vendor ——GPU供应商 Filter by RAM (按RAM过滤) 筛选出所有内存容量在选择范围之间的GPU GPU 下拉菜单选择具体的GPU型号 LoRa % trainable param…

靠AI创意,变现20w!

文章首发于公众号&#xff1a;X小鹿AI副业 大家好&#xff0c;我是程序员X小鹿&#xff0c;前互联网大厂程序员&#xff0c;自由职业2年&#xff0c;也一名 AIGC 爱好者&#xff0c;持续分享更多前沿的「AI 工具」和「AI副业玩法」&#xff0c;欢迎一起交流~ 之前X小鹿一直在各…

记录一次安装k8s初始化失败

实例化 kubeadm init --configkubeadm.yaml --ignore-preflight-errorsSystemVerification报错 [init] Using Kubernetes version: v1.25.0 [preflight] Running pre-flight checks error execution phase preflight: [preflight] Some fatal errors occurred:[ERROR CRI]: co…

海外仓erp系统是什么?和海外仓管理系统一样吗?

为了满足海外仓全球化发展的大趋势&#xff0c;同时提升海外仓运转的效率&#xff0c;一套好用&#xff0c;性价比高的海外仓管理系统还是非常重要的。 不过很多海外仓企业其实不太分得清erp系统和海外仓管理系统的差异&#xff0c;今天我们就来系统的聊一下&#xff0c;方便大…

K8S有了Service,为什么还要Ingress?

1、有了Service为什么还要Ingress? NodePort对外暴露端口存在的不足&#xff1a; 一个端口只能一个服务使用, 端口需要提前规划。 随着业务扩展, 端口的管理将是一个头疼的问题 只支持4层的负载均衡 LoadBalancer存在的不足&#xff1a; 贵、贵、贵。 要上云(俗话说上云…

需求跟踪矩阵是什么?怎么创建?一文详解

一、什么是需求跟踪矩阵 对项目经理或产品经理来说&#xff0c;需求清单肯定不陌生&#xff0c;那什么是需求跟踪矩阵呢&#xff1f; 需求跟踪矩阵&#xff08;Requirement Track Matrix&#xff0c;简称RTM &#xff09;&#xff0c;是把产品需求从其来源连接到能满足需求的…

使用MinGW来构建C语言项目

文章目录 安装MinGW编写C语言源代码创建构建脚本构建项目 MinGW构建C语言项目的基本步骤&#xff1a; 安装MinGW 从MinGW的官方网站下载MinGW安装程序。 运行安装程序&#xff0c;选择安装基本组件&#xff0c;如gcc编译器、gdb调试器和make工具。 安装完成后&#xff0c;将…

无人机助力光伏项目测绘建模

随着全球对可再生能源需求的不断增长&#xff0c;光伏项目作为其中的重要一环&#xff0c;其建设规模和速度都在不断提高。在这一背景下&#xff0c;如何高效、准确地完成光伏项目的测绘与建模工作&#xff0c;成为了行业发展的重要课题。近年来&#xff0c;无人机技术的快速发…

2024.05.11 校招 实习 内推 面经

绿*泡*泡VX&#xff1a; neituijunsir 交流*裙 &#xff0c;内推/实习/校招汇总表格 1、校招&实习 | 小米24届春招&25届实习岗位热招中&#xff08;内推&#xff09; 校招&实习 | 小米24届春招&25届实习岗位热招中&#xff08;内推&#xff09; 2、校招 | …

哪个品种能够叫板白银现货t+d?

白银TD是在上海黄金交易所挂牌的白银投资品种&#xff0c;它可以说是国内版的现货白银交易&#xff0c;大家也可以把它理解成为白银交易的“快速通道”。通过它&#xff0c;投资者可以更加灵活地买卖白银&#xff0c;实现对内地白银价格的跟踪&#xff0c;并获得一定的杠杆化收…

git工作流程

以财务开发为例子&#xff1a; 1. 新建分支 1.1. upstream新建分支&#xff1a;finance-feature 1.2. origin新建对应分支&#xff1a;finance-feature 1.3 新建本地分支 git branch finance-feature 注&#xff1a; 同步远程分支&#xff1a;git fetch upstream feature…

pwa动态修改manifest.json(start_url)

pwa动态设置manifest.json 引言 在使用pwa开发时&#xff0c;因需求原因&#xff0c;需要动态设置pwa安装应用的地址&#xff0c;也就是manifest.json中的start_url地址&#xff0c;比如说业务场景需要携带不同的参数在安装地址后台&#xff0c;从中遇到了很多问题&#xff0…

CSDN智能总结助手

github项目地址&#xff1a; https://github.com/anjude/little-demo/tree/master 获取CSDN的user name和user token 打开csdn&#xff0c;打开控制台 - Application - Cookies&#xff0c;找到domain为blog.csdn.net的cookie&#xff0c;复制user_name和user_token的值 把上…

最详细Linux提权总结(建议收藏)

1、内核漏洞脏牛提权 查看内核版本信息 uname -a 具体提权 1、信息收集配合kali提权 uname -a #查看内核版本信息 内核版本为3.2.78&#xff0c;那我们可以搜索该版本漏洞 searchsploit linux 3.2.78 找到几个可以使用的脏牛提权脚本&#xff0c;这里我使用的是40839.c脚…

11.客户端-文件上传、文件下载的实现

本章主要模拟终端设备通过事先制定的协议向服务端请求文件上传、文件下载的操作。 示例代码: 1.客户端分段读取文件发送至服务端 private static void input(String path) {// 时间戳,唯一ID标记long id = System.currentTimeMillis();File file = new File(path);long le…

独立乙游井喷成新趋势,真来抢市场还是只画大饼?

国产乙游市场又迎来了新变化。 进入5月份&#xff0c;独立乙女游戏如雨后春笋般冒了出来&#xff0c;两、三个人组成的制作组&#xff0c;没有任何程序协助和资金支持&#xff0c;全靠为爱发电来打造一款乙女游戏&#xff0c;成为了今夏乙游市场的新趋势。 目前已经有独立乙游…

【Java】在高并发场景下,保证 Redis 缓存一致性的几种方案

在高并发场景下&#xff0c;保证 Redis 缓存一致性是一个常见的挑战。以下是几种常见的解决方案及其优缺点&#xff0c;以及相应的代码示例。 1. Cache Aside Pattern (旁路缓存模式) 原理 读取数据时&#xff0c;先读缓存&#xff0c;如果缓存没有命中&#xff0c;再从数据…