读取excel等文件根据注解自动装填为实体类
问题:以前每次读取excel 都是根据第几列来装填实体类里面的属性。写起来很麻烦。还要判断。
思路:
1.因为每次读取excel 或者word表格 都能得到是第几列的数据,那么可以知道每列数据的index。
2.把每个列的index作为key,数据内容作为value变成一个属性值,
3.通过fastJson 的JSONObject 作为一个对象,JSONArray 作为这些对象的容器。
4.在实体类上用fastJSon 的注解@JSONFIELD(name="第几列") 0---nIndex 作为转换的依据。 注意这里最好额外写出一个实体类,用来专门作为接收的实体类。避免别的地方接收时转换的错误。
伪代码:
装填数据:
JSONArray array = new JSONArray();
while(iterator.hasNext()){
JSONObject ob = new JSONObject();
for(int i = 0 ; i < row.getcells();i++)
{
ob.put(String.valueOf(i),row.getCell(i).text().trim());
}
array.add(ob);
}
实体类:
class Student
{
@JSONField(name="0")
private String name;
@JSONField(name="1")
private String age;
@JSONField(name="2")
private String sex;
}
转换:
main{
JSONArray array = JSONUtils.covertJSON();
List<Student> list = JSON.parseArray(array.tostring(),Student.class);
}
至此一个大致的过程就出来了。emmm 想了一下这个应该是半自动装填模式。
如果需要全自动装填。可以使用反射获取实体类里面的属性,然后根据上到下的index来设置。这种方式需要设置安全性问题。
读取excel等文件根据注解自动装填为实体类的更多相关文章
- 前端读取Excel报表文件 js-xlsx
1.http://www.cnblogs.com/imwtr/p/6001480.html (前端读取Excel报表文件) 2.https://github.com/SheetJS/js-xlsx
- python读取Excel表格文件
python读取Excel表格文件,例如获取这个文件的数据 python读取Excel表格文件,需要如下步骤: 1.安装Excel读取数据的库-----xlrd 直接pip install xlrd安 ...
- Mybatis自动生成xml文件、dao接口、实体类
Mybatis可以通过逆向工程,实现自动生成xml文件.dao接口.实体类 以下使用的是Intellij Idea进行自动生成 一.首先,要在pom.xml中导入插件,在<build>中加 ...
- 使用js-xlsx库,前端读取Excel报表文件
在实际开发中,经常会遇到导入Excel文件的需求,有的产品人想法更多,想要在前端直接判断文件内容格式是否正确,必填项是否已填写 依据HTML5的FileReader,可以使用新的API打开本地文件(参 ...
- 前端读取Excel报表文件
在实际开发中,经常会遇到导入Excel文件的需求,有的产品人想法更多,想要在前端直接判断文件内容格式是否正确,必填项是否已填写 依据HTML5的FileReader,可以使用新的API打开本地文件(参 ...
- pyhton读取 excel表格文件
2019的第一天,忘记昨日之事,迎接新的明天. excel表格文件办公中常用,如通过Python操作这些数据需导入并有序读取这些数据 特随笔,供以后查阅 代码如下: import xlrd # fil ...
- python脚本 读取excel格式文件 并进行处理的方法
一.安装xlrd模块 pip install xlrd 二.读取excel文件 try: excel_obj = xlrd.open_workbook("文件路径") except ...
- 结合Poi实现可读取Excel的文件选择对话框
第一步:ApachePoi的jar包导全,不全会出现异常. 第二步:写就完事了:此例为读取特定模板的excel,仅供参考,根据实际需求改写. package 自建包; import java.awt. ...
- JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法
在Spring 集成 Hibernate 的JPA方式中,需要在persistence配置文件中定义每一个实体类,这样非常地不方便,远哥目前找到了2种方法. 这2种方式都可以实现不用persist ...
- 在MyEclipse的Maven环境下,使用mybatis-generator插件自动生成映射文件(接口)及实体类
在数据表比较多的情况下,手动编写sql映射文件和实体类,实在太多过繁琐,而mybatis-generator能自动生成这此东西,减少了重复性的工作量.mybatis-generator的配置容易出现问 ...
随机推荐
- 浅谈Pytest中的warning处理
浅谈Pytest中的warning处理 没有处理warning 我们写一个简单的测试 import pytest def test_demo(): import warnings warnings.w ...
- MySQL-字段约束条件
1.无符号.零填充 1.unsigned:用在生成表的过程中,表示不取负数,只取正数和0,负数会直接报错,eg:id int unsigned. 2.zerofill:用在生成表的过程中,跟在整形2后 ...
- Rust一些学习文档
<Rust 烹饪书>https://llever.com/rust-cookbook-zh/intro.zh.html <Rust高级编程>https://learnku.co ...
- NetApp DataONTAP 集群模式 学习笔记1
一.NetApp存储操作系统 Data ONTAP是NetApp最流行的存储操作系统,它运行在NetApp FAS(Fabric Attached Storage)系统上.FAS系统是被设计为共享的存 ...
- 自动化测试如此容易!多语言自动化测试框架 Selenium 编程(C#篇)
介绍 Selenium 官网:https://www.selenium.dev/ Selenium 是功能强大的自动化测试工具集,是支持 Web 浏览器自动化的一系列工具和库的总括项目,一共包括以下三 ...
- (原创)【B4A】一步一步入门04:编译模式、打包为APK、私钥签名
一.前言 上篇 (原创)[B4A]一步一步入门03:APP名称.图标等信息修改 中我们将APP做成了标准的样子. 本篇文章会讲解如何将程序打包成APK文件以分发,同时讲解如何制作私钥并签名APP,以用 ...
- LinkedList内部实现原理
LinkedList内部实现原理 java list 同ArrayList内部原理一样 我们先创建一个LinkedList对象LinkedList<String> li = new Lin ...
- Winform 程序多开
在使用应用程序的过程中,经常要求应用程序只能运行一次.如果发现重复开启,应从系统进程列表中搜索到已经开启的进程,并将该进程窗口移到最前端显示. 记录一下过程. 实现过程 在 Program.cs 文件 ...
- linux配置两个不同网段的ip and linux批量添加连续IP
转载csdn: centos 下批量添加连续IP_cdefg198的专栏-CSDN博客_centos批量添加ip 转载csdn: linux配置两个不同网段的ip_子曰小玖的博客-CSDN博客_lin ...
- 浅拷贝导致的bug
目录 深拷贝与浅拷贝区别 hutool BeanUtil.copyProperties 浅拷贝问题重现 实现深拷贝的一些工具 深拷贝与浅拷贝区别 在 Java 中,除了基本数据类型(元类型)之外,还存 ...