java 读取json文件并写入Excel
依赖于lombok、easyExcel
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;
}