Java12 Excel和Json文件解析

Excel文件解析:

Excel文件解析(EasyExcel框架解析)
Excel文件解析(Apache POl框架解析)

(1)Excel文件对象创建:POI

《1》创建工作簿对象:

XSSFWorkbook workbook=new XSSFWorkbook();

《2》创建工作表对象:

XSSFSheet sheet =workbook.createSheet();

《3》创建行对象:

Row row =sheet.createRow()

《4》创建单元格对象:

​ Cell cell=row.createCell();

(2)输出操作:workbook.write(Outputstream os)

(3)设置单元格数据格式:

《1》创建DataFormat数据格式化对象

XSSFDataFormat dt=workbook.createDataFormat()

《2》进行不同格式编写(以日期和金额格式化为例)

Short dateshort=dt.getFormat(“yyyy-MM-dd”)

Short moneyshort=dt.getFormat(“¥###,#”)

《3》创建单元格样式对象,并赋值

CellStyle datestyle=workbook.createCellstyle()

Datestyle.setDataformat(dateshort)

CellStyle moneystyle=workbook.createCellstyle()

moneystyle.setDataformat(moneyshort)

创建加粗居中等单元格样式

CellStyleheaderCellStyle=workbook.createCellStyle();

//设置单元格的水平对齐类型, 此时水平居中

headerCellStyle.setAlignment(HorizontalAlignment.CENTER);

// 设置单元格的垂直对齐类型,此时垂直靠底边

headerCellStyle.setVerticalAlignment(VerticalAlignment.BOTTOM);

// 创建并设置字体

Font font = workbook.createFont();

font.setBold(true);

font.setColor(Font.COLOR_RED);

headerCellStyle.setFont(font);

《4》设置单元格样式:cell.cellstyle(具体样式)

(2)PIO数据读入:

《1》创建输入流对象并与工作簿连接起来

《2》获取工作表:

Shee sheet=workbook.getSheet(“表名”)

Shee sheet=workbook.getSheeAt(工作表的下标)

《3》获取行信息和单元格信息:

<1> 方式1: For(Row row:sheet){

​ For(Cell cell :row){

​ System.out.println(cell)

<2> 方式2:for(int i=0;i<=sheet.getLastRowNum;i++){

​ Row row=sheet.getRow(i);

​ For(int j=0;j<row.getLastCellNum;j++){

​ Cell cell=row.getCell(j)

​ CellType celltype=cell.getCcllType();获取单元格类型,再通过不同的类型输出不同的值

​ Cell.getStringCellValue:获取String型单元格的值

​ Cell.getNumericCellValue;获取数字型单元格的值

(3)大文件的写出或读入:

《1》 使用SXSSFWork类,可设置内存中最多保留的行数

例:SXSSFWorkbook workbook=new SXSSFWorkbook workbook(100);

《2》使用EasyExcel写出操作:

EasyExcel.write(写出位置,写出类型).sheet(表名).dowrite(list数据)

《3》使用EasyExcel读取操作:

EasyExcel.read(file,head,监听器).sheet().doread();

参数解析:file ----文件路径

​ Head—格式类型

​ 监听器(AnalysisEventListener)-----读取到文件后的操作(doAfterAllAnalysed)或操作逻辑(invoke)。

JSON解析

(1)简述:json是一种轻量级数据交换格式,采用完全独立与编程语言的文本格式来储存和表示数据。

(2)语法:《1》使用{}来保存对象,每个对象由若干数据组成。

​ 《2》每个数据由key:value键值对组成

​ 《3》数据之间用“,”分隔

​ 《4》使用“\”对特殊字符进行转义

(3)优点: 《1》JSON只允许使用UTF-8编码,不存在编码问题;

· 《2》JSON内容仅包含key-value键值对, 格式简单,不存在冗余结构,是一种轻量级结构;

· 《3》浏览器内置JSON支持,如果把数据用 J SON发送给浏览器,可以用JavaScript直接处理;

(4)可使用Fastjson实现将javaBean对象序列化为json类型的字符串,也可将json类型的字符串反序列化为javaBean对象

(5) Fastjson的主要对象:

《1》JSON接口:提供json解析操作的入口方法,用于原始转换。

《2》JSONObject类 : 封装json格式的对象。

《3》JSONArray 类: 封装json格式的集合。

(6)相关转换方法:

《1》JSON.toJSONString(Object object)//传入一个javaBean对象(可为数组或集合),将其序列化为String类型JSON格式的字符串

《2》JSON.parseObject(String text)//将JSON格式的字符串反序列化为JSONObject类型的对象

《3》JSON.parseObject(String text,转换类型.class)//将JSON格式的字符串反序列化为要转换的类型的对象(javaBean对象)

《4》JSON.parseObject(String text,new TypeRefence<转换类型>(){})//将JSON格式的字符串反序列化为要转换的类型的对象(javaBean对象)万能公式法

《5》JSON.parseArray(String text)//将JSON格式的字符串反序列化JSONArray类型的对象(集合类)

《6》JSON.parseArray(String text,转换类型.class)//将JSON格式的字符串反序列化为要转换类型的对象(只能转成集合类)

《7》 JSON.parseObject(String text,new TypeRefence<转换类型>(){})//将JSON格式的字符串反序列化为要转换的类型的对象(javaBean对象)万能公式法(可转成集合类型或者数组类型)

(7)JSONObject类的方法:

《1》get(Object key)方法:通过key获取对应的value值,返回值为object类型对象

《2》getJSONObject( String key)方法:通过key获取对应的value值,返回值为JSONobject类型对象

《3》getJSONArray( String key)方法:通过key获取对应的value值,返回值为JSONArray类型对象

《4》getObject( String key,转换类型.class)方法:通过key获取对应类型的对象,返回值为对应的javaBean类型对象

《5》getList( String key,转换类型.class)方法:通过key获取对应类型的对象,返回值为泛型为转换类型的list集合对象

(8)JSONArray类的方法:

《1》getJSONObject(int 下标)方法:通过下标获取对应的JSONobject类型对象,返回值为JSONobject类型对象

《2》getJSONArray(int 下标 )方法:通过下标获取对应的JSOArray类型对象,返回值为JSOArray类型对象

(9)常见问题处理:

《1》FastJson默认过滤null值,不显示null值字段。若需要显示null值,可通过Feature枚举值进行设置(写在JSON.toJSONString方法中第一个参数(javaBean对象)后面)

常见枚举值如下:

Feature.WriteMapNullValue如果Map中包含Null值,则输出,不会过滤
Feature.WriteNullListAsEmpty如果输出的List值为Null,则输出[ ],不会输出Null
Feature.WriteNullStringAsEmpty如果输出的字符串值为Null,则输出“”,不会输出Null
Feature.WriteNullNumberAsZero如果输出的数字值为Null,则输出0,不会输出Null
Feature.UseSingleQuotes使用单引号

《2》控制JSON的字段顺序:输出结果与字段定义顺不一致。需要在定义实体类字段时,使用@JSONField注解的ordinal属性进行顺序配置。序号越小越靠前,默认ordinal=0.

《3》控制成员变量是否被序列化:如果不想某个成员变量被序列化,需要在定义实体类字段时,使用@JSONField注解的serialize选择当前成员变量是否被序列化,serialize=false时,不会序列化,反之则被序列化,默认serialize=true

《4》控制序列化出去的字段(成员变量)名称:使用@JSONField注解的name设置序列化出去的字段(成员变量)名称

《5》控制序列化出去的成员变量对应值的格式:使用@JSONField注解的format设置序列化出去的字段(成员变量)对应值的格式

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

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

相关文章

SQL语句复习

一、CTE和WITH CTE是一种命名的临时结果集,CTE是通过WITH子句来定义的. WITH cte_name (column1, column2, ...) AS (-- CTE查询定义SELECT ... ) -- 主查询 SELECT ... FROM cte_name WHERE ... column1, column2, ... 是可选的列名列表&#xff0c;通常用于给CTE的列命名。…

c++11新特性-lambda表达式

1. 概念 lambda表达式实际上是一个匿名类的成员函数&#xff0c;该类由编译器为lambda创建&#xff0c;该函数被隐式地定义为内联。因此&#xff0c;调用lambda表达式相当于直接调用它的operator()函数&#xff0c;这个函数可以被编译器内联优化&#xff08;建议&#xff09;。…

Ubuntu服务器时间和本地时间不一致怎么解决——Linux的Local Time和RTC time

最近一直在搞大模型的相关工作&#xff0c;所以一直在用Linux服务器&#xff0c;前面的文章里也提到了&#xff0c;我用的是一台Dell PowerEdge R730xd。 但在使用中发现&#xff0c;IDRAC中的日志时间和本地时间存在时差&#xff0c;大概相关8小时。 对于技术人员&#xff0c…

数据结构:树形结构(树、堆)详解

数据结构&#xff1a;树形结构&#xff08;树、堆&#xff09;详解 一、树&#xff08;一&#xff09;树的性质&#xff08;二&#xff09;树的种类二叉树多叉树满N叉树完全N叉树 &#xff08;三&#xff09;二叉树的实现1、二叉树结构定义2、二叉树功能实现&#xff08;1&…

windows安全中心永久卸载工具分享

使用方法 博客&#xff1a;h0ck1r丶羽~从零到一 卸载工具下载链接&#xff1a; 夸克网盘分享 一路回车&#xff0c;选项Y即可 耐心等待几秒种&#xff0c;自动重启 此时打开windows安全中心&#xff0c;已经完全不能使用了&#xff0c;响应的杀毒功能也关了 往期推荐 【渗透测…

机器人末端阻抗控制Simulink仿真

机器人末端阻抗控制是一种重要的机器人控制策略&#xff0c;它主要用于调节机器人末端执行器与环境之间的动态关系&#xff0c;以保证机器人在适当的柔顺性下进行轨迹跟踪或与环境交互。在使用Simulink进行机器人末端阻抗控制仿真时&#xff0c;主要步骤可以归纳如下&#xff1…

QT做一个USB HID设备识别软件

1.下载 HidApi库&#xff1a;GitHub - yigityuce/HidApi: Human Interface Device Api (HidApi) with C 2.pro文件添加 DEFINES - UNICODE LIBS -lsetupapi 3.建立三个对象 HidApi hidApi;HidDevice hidDev;//HID设备HidDeviceList devList;//HID设备列表 4.对 HID 设备进…

JavaWeb - Spring Boot

Spring 官网​​​​​Spring | Home Spring Boot Spring Boot是一个由Pivotal团队提供的开源框架&#xff0c;旨在简化Spring应用的初始搭建以及开发过程。在Spring Boot项目中&#xff0c;通常会有Controller、Service、Mapper和Entity等层次结构。下面将详细介绍这些层次的…

用 Higress AI 网关降低 AI 调用成本 - 阿里云天池云原生编程挑战赛参赛攻略

作者介绍&#xff1a;杨贝宁&#xff0c;爱丁堡大学博士在读&#xff0c;研究方向为向量数据库 《Higress AI 网关挑战赛》正在火热进行中&#xff0c;Higress 社区邀请了目前位于排行榜 top5 的选手杨贝宁同学分享他的心得。下面是他整理的参赛攻略&#xff1a; 背景 我们…

Serilog文档翻译系列(三) - 基础配置

Serilog 使用简单的 C# API 来配置日志记录。当需要外部配置时&#xff0c;可以&#xff08;慎用&#xff09;通过使用 Serilog.Settings.AppSettings 包或 Serilog.Settings.Configuration 包进行混合配置。 创建日志记录器 日志记录器是通过 LoggerConfiguration 对象创建的…

基于springboot的汽车租赁管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于springboot的汽车租赁管理系统,java…

【RabbitMQ】快速上手

目 录 一. RabbitMQ 安装二. RabbitMQ 核心概念2.1 Producer 和 Consumer2.2 Connection 和 Channel2.3 Virtual host2.4 Queue2.5 Exchange2.6 RabbitMQ 工作流程 三. AMQP四. web界面操作4.1 用户相关操作4.2 虚拟主机相关操作 五. RabbitMQ 快速入门5.1 引入依赖5.2 编写生产…

stm32 8080时序驱动lcd屏幕

PSAM使用的硬件接口 PSAM读时序 PSAM写时序 相关时序 PSAM_RCRx NOR 和PSRAM控制寄存器

28. 双耳配对 - 配置

1. 概述 通过MAC地址的最后一位的奇偶来判断左右耳 2. 验证 右耳:奇数(主耳)-》BT ADDR: 12:42:22:34:34:6d 左耳:偶数(从耳)-》BT ADDR: 12:42:22:34:34:6c

TPH-YOLOv5:基于Transformer预测头的改进YOLOv5,用于无人机捕获场景的目标检测

摘要 提出了TPH-YOLOv5。在YOLOv5的基础上&#xff0c;增加了一个预测头来检测不同尺度的目标。然后用Transformer Prediction Heads&#xff08;TPH&#xff09;代替原有的预测头&#xff0c;探索自注意机制的预测潜力。还集成了卷积块注意力模型&#xff08;CBAM&#xff09;…

前端学习Day36

Day36:P177-P181 学习笔记: 1.面向过程&#xff1a; 就是分析出解决问题所需要的步骤&#xff0c;然后用函数把这些步骤一步一步实现&#xff0c;使用的时候再一个一个的依次调用就可以了。 2.面向对象&#xff1a; 是把事务分解成为一个个对象&#xff0c;然后由对象之间…

Gland安装与Debug

下载地址&#xff1a;https://www.jetbrains.com.cn/go/download/#sectionwindows debug官方文档: https://www.jetbrains.com/help/go/debugging-code.html 创建项目 选择新建项目 填写项目本地路径&#xff0c;以及选择go SDK 项目创建后检查项目设置 添加main包以及…

安装MySQL,navicat以及Django配置遇到的一些问题

MySQL安装问题 安装MySQL按照了此文章&#xff1a; MySQL数据库下载及安装教程&#xff08;最最新版&#xff09;_mysql下载安装-CSDN博客https://blog.csdn.net/weixin_39289696/article/details/128850498首先是遇到了starting the server红色叉号显示 按照上面文章的介绍…

Linux--IO多路复用(select,poll,epoll)

IO多路复用——select&#xff0c;poll&#xff0c;epoll IO多路复用是一种操作系统技术&#xff0c;旨在提高系统处理多个输入输出操作的性能和资源利用率。与传统的多线程或多进程模型相比&#xff0c;IO多路复用避免了因阻塞IO而导致的资源浪费和低效率问题。它通过将多个IO…

[英语单词] quorum

这个quorum这个单词也是非常特殊&#xff0c;他说一个组合&#xff0c;多数同意的多数的组合&#xff0c;这算是一个行为的结果&#xff0c;所以放到一个句子里的时候&#xff0c;有些绕&#xff0c;需要脑子转个弯。 在计算机科学中&#xff0c;“quorum” 是指在分布式系统或…