java 读取json文件并写入Excel

依赖于lombok、easyExcel

java 复制代码
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;

import java.io.*;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * @author hsj
 * @description:
 * @date 2024-8-28 17:54
 */
public class ReadJsonFile {
	public static void main(String[] args) throws Exception {
		File file = new File("I:\\BladeX-Boot\\src\\test\\java\\org\\springblade\\税220304.json");
		FileReader fileReader = new FileReader(file);
		Reader reader = new InputStreamReader(new FileInputStream(file), "Utf-8");
		int ch = 0;
		StringBuffer sb = new StringBuffer();
		while ((ch = reader.read()) != -1) {
			sb.append((char) ch);
		}
		fileReader.close();
		reader.close();
		String jsonStr = sb.toString();

		JSONArray ja = JSON.parseArray(jsonStr);
		List<F> list = new ArrayList<F>();
		for (Object o : ja) {
			JSONObject jb = (JSONObject) o;
			F f = F.builder()
				.name(String.format("*%s*%s", jb.getString("spfwjc"), jb.getString("xmmc")))
				.id(jb.getString("sphfwssflhbbm"))
				.model(jb.getString("ggxh"))
				.unit(jb.getString("dw"))
				.num(jb.getString("spsl"))
				.price(jb.getBigDecimal("hsdj"))
				.total(jb.getBigDecimal("hsje"))
				.tax0(jb.getBigDecimal("slv"))
				.tax1(jb.getBigDecimal("se"))
				.build();
			list.add(f);
		}

		EasyExcel.write("I:\\BladeX-Boot\\src\\test\\java\\org\\springblade\\税220304.xlsx", F.class).sheet("税220304").doWrite(list);
	}
}

@Getter
@Setter
@EqualsAndHashCode
@Builder
class F {
	@ExcelProperty("项目名称")
	private String name;
	@ExcelProperty("ID")
	private String id;
	@ExcelProperty("规格型号")
	private String model;
	@ExcelProperty("单位")
	private String unit;
	@ExcelProperty("数量")
	private String num;
	@ExcelProperty("单价含税")
	private BigDecimal price;
	@ExcelProperty("金额含税")
	private BigDecimal total;
	@ExcelProperty("税率")
	private BigDecimal tax0;
	@ExcelProperty("税额")
	private BigDecimal tax1;
}
相关推荐
SunnyDays10113 分钟前
使用 Python 冻结、取消冻结和拆分 Excel 窗格
python·excel·冻结窗格·冻结行和列·取消冻结窗格·拆分窗格
古城小栈4 分钟前
Spring AI 1.1:快速接入主流 LLM,实现智能问答与文本生成
java·人工智能·spring boot·spring
TheNextByte14 分钟前
如何将Android短信导出到CSV/TEXT/Excel
android·excel
计算机学姐5 分钟前
基于SSM的宠物领养管理系统【2026最新】
java·vue.js·后端·java-ee·tomcat·mybatis·宠物
shenweihong6 分钟前
鸿蒙6开发保存Excel文件
华为·excel·harmonyos
后端小张7 分钟前
【JAVA进阶】鸿蒙开发与SpringBoot深度融合:从接口设计到服务部署全解析
java·spring boot·spring·spring cloud·华为·harmonyos·鸿蒙
Qiuner7 分钟前
Spring Boot AOP(一) 入门与核心概念
java·spring boot·后端·spring·aop
NocoBase7 分钟前
如何快速搭建一个替换 Excel 的系统?(完整指南)
数据库·低代码·开源·excel·个人开发·零代码·无代码
carry杰8 分钟前
Springboot3 + shardingsphere-jdbc5.5.2 按年月分表(动态创建表)
java·spring cloud
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ8 分钟前
throw new Exception 如何指定返回code
java·开发语言