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

  • 18
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用以下步骤将Excel格式的文件转换为JSON格式: 1. 读取Excel文件并将其转换为Java对象。可以使用Apache POI或JExcelAPI等Java库来实现此操作。 2. 将Java对象转换为JSON格式。可以使用Jackson、Gson等Java库来实现此操作。 以下是一个简单的示例代码,用于读取Excel文件并将其转换为JSON格式: ```java import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import com.fasterxml.jackson.databind.ObjectMapper; public class ExcelToJsonConverter { public static void main(String[] args) throws IOException { // 读取Excel文件 File file = new File("data.xls"); FileInputStream inputStream = new FileInputStream(file); HSSFWorkbook workbook = new HSSFWorkbook(inputStream); HSSFSheet sheet = workbook.getSheetAt(0); // 解析Excel文件中的数据 List<Object[]> rows = new ArrayList<>(); Iterator<?> rowIterator = sheet.rowIterator(); while (rowIterator.hasNext()) { HSSFRow row = (HSSFRow) rowIterator.next(); Iterator<?> cellIterator = row.cellIterator(); List<Object> cells = new ArrayList<>(); while (cellIterator.hasNext()) { HSSFCell cell = (HSSFCell) cellIterator.next(); Object cellValue = getCellValue(cell); cells.add(cellValue); } rows.add(cells.toArray()); } // 将Java对象转换为JSON格式 ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(rows); System.out.println(json); } private static Object getCellValue(HSSFCell cell) { switch (cell.getCellType()) { case STRING: return cell.getStringCellValue(); case NUMERIC: return cell.getNumericCellValue(); case BOOLEAN: return cell.getBooleanCellValue(); case FORMULA: return cell.getCellFormula(); case BLANK: return ""; default: return null; } } } ``` 上述代码将Excel文件中的数据读取到一个Java List中,并将该List转换为JSON格式。请注意,该代码使用Apache POI库来读取Excel文件。如果您使用的是其他库,则需要相应地更改代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值