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

​ 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设置序列化出去的字段(成员变量)对应值的格式

你可能感兴趣的:(JavaSE,excel,json)