文件解析的常见两种方式

一、JSON解析

 JSON是一种轻量级的数据交换格式。主要是用于计算机系统之间进行数据的传递。

特点:

  1. JSON只允许UTF-8编码,不存在编码的问题;
  2. JSON内容仅包括key-value键值对,格式简单,不存在冗余,是一种轻量级结构;

一、使用Fastjson进行JSON的解析

首先是要下载:

 

 

二、JSON类

JSON类的作用主要是用于原始转换,常用方法:

  • Java对象“序列化”为JSON字符串:JSON.toJSONString(Object object)

  • JSON字符串反序列化为Java对象 JSNO.parseObject(String text)

二、Excel文件解析 

Apache POI提供给Java程序对Microsoft Office格式档案进行读写功能的API开源类库。

首先是需要添加Jar包依赖:

 

把包导入之后,就需要导入一个Excel文件:

加载解析Excel文件:

//Workbook对象:Excel文件
//Sheet对象L:电子工作簿
//Row对象:数据行
//Cell对象:单元格
public class Demo01 {
	public static void main(String[] args) throws IOException {
		//解析一个excel对象
		
		//通过输入流,读取excel文件
		FileInputStream in = new FileInputStream("E:\\QQ\\2646121219\\FileRecv\\1627356552686.xlsx");
		
		//将输入流传入Workbook
		Workbook workbook = new XSSFWorkbook(in);
		
	}

}

 创建工作簿:

//创建工作簿sheet
			Sheet sheet0 = workbook.createSheet("2022");
			Sheet sheet1 = workbook.createSheet("2021");
			Sheet sheet2 = workbook.createSheet("2020");

获取工作簿:

//按照名称获取工作簿
		Sheet sheet0 = workbook.getSheet("Sheet0");
		Sheet sheet1 = workbook.getSheetAt(1);
		System.out.println("工作簿1中的数据行"+sheet0.getLastRowNum());
		System.out.println("工作簿2中的数据行"+sheet1.getLastRowNum());

创建数据行:

Row row = sheet.createRow(0);

根据下标获取指定行:

Row row = sheet.getRow(0);

遍历所有行:

for(Row row : sheet){
    System.out.println(row);
}

创建单元格:

Cell cell0 = row.createCell(0);

设置单元格的值:

cell0.setCellValue(UUID.randomUUID().toString());

整个解析过程:

public class Demo04 {
	public static void main(String[] args) throws FileNotFoundException {
		try (Workbook workbook = new XSSFWorkbook();
				FileOutputStream out = new FileOutputStream("E:\\QQ\\2646121219\\FileRecv\\162.xlsx")) {
			//创建工作簿sheet
			Sheet sheet0 = workbook.createSheet("2022");
			Sheet sheet1 = workbook.createSheet("2021");
			Sheet sheet2 = workbook.createSheet("2020");
			
			//创建数据行row
			Row row = sheet0.createRow(0);
			
			//创建单元格
			Cell cell0 = row.createCell(1);
			//往单元格里添加值
			cell0.setCellValue(UUID.randomUUID().toString());
			Cell cell1 = row.createCell(2);
			cell1.setCellValue(LocalDateTime.now());
			Cell cell2 = row.createCell(3);
			cell2.setCellValue(Math.random()*10);
			
			//将Workbook对象中包含的数据,通过输出流,写入Excel文件
			workbook.write(out);
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

}

三、超大Excel的解析

当遇到超大Excel的时候,使用的是EasyExcel,这些数据就会flush到磁盘上,不会出现内存不够的情况。

 写入100w条数据:

 读取100w条数据:

la 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值