天天看點

記錄一下java将excel資料轉成json資料

直接上代碼,我自己能看懂就行(嘻嘻)

import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.metadata.Sheet;
import cwbb.qtkjzd_mjfyl.qtkjzdhxzgsb01341.XjllbmjfylzzGridlb;
import cwbb.qtkjzd_mjfyl.qtkjzdhxzgsb01341.YwhdbmjfylzzGridlb;
import cwbb.qtkjzd_mjfyl.qtkjzdhxzgsb01341.ZcfzbmjfylzzGridlb;
import net.sf.json.JSONArray;
import org.junit.Test;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.math.BigDecimal;
import java.util.*;


public class MainTests {

    @Test
    public void test1() {
        // 讀取 excel 表格的路徑
        String readPath = "D:\\).xlsx";
        try {
            // sheetNo --> 讀取哪一個 表單
            // headLineMun --> 從哪一行開始讀取( 不包括定義的這一行,比如 headLineMun為2 ,那麼取出來的資料是從 第三行的資料開始讀取 )
            // clazz --> 将讀取的資料,轉化成對應的實體,需要 extends BaseRowModel
            Sheet sheet = new Sheet(3, 5, XjllbmjfylzzGridlb.class);
            List<Object> readList = EasyExcelFactory.read(new FileInputStream(readPath), sheet);
            LinkedList<Object> l = new LinkedList<>();
            for (Object obj : readList) {
                Long l1 = ((XjllbmjfylzzGridlb) obj).getEwbhxh();
                String l2 = ((XjllbmjfylzzGridlb) obj).getXmmc();
                BigDecimal l3 = ((XjllbmjfylzzGridlb) obj).getJe();
                LinkedHashMap<String, Object> map = new LinkedHashMap<>();
                if (l1 != null) {
                    map.put("行次", l1);
                    map.put("項目", l2);
                    map.put("金額", l3);
                    l.add(map);
                }
            }
            JSONArray jsonArray = JSONArray.fromObject(l);
            System.out.println(jsonArray);

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void test2() {
        String readPath = ".xlsx";
        try {
            Sheet sheet = new Sheet(2, 6, YwhdbmjfylzzGridlb.class);
            List<Object> readList = EasyExcelFactory.read(new FileInputStream(readPath), sheet);
            LinkedList<Object> l = new LinkedList<>();
            for (Object obj : readList) {
                Long l1 = ((YwhdbmjfylzzGridlb) obj).getEwbhxh();
                String l2 = ((YwhdbmjfylzzGridlb) obj).getXmmc();
                BigDecimal l3 = ((YwhdbmjfylzzGridlb) obj).getFxdxbys();
                BigDecimal l4 = ((YwhdbmjfylzzGridlb) obj).getXdxbys();
                BigDecimal l5 = ((YwhdbmjfylzzGridlb) obj).getHjbys();
                BigDecimal l6 = ((YwhdbmjfylzzGridlb) obj).getFdxdxbnljs();
                BigDecimal l7 = ((YwhdbmjfylzzGridlb) obj).getXdxbnljs();
                BigDecimal l8 = ((YwhdbmjfylzzGridlb) obj).getHjbnljs();
                LinkedHashMap<String, Object> map = new LinkedHashMap<>();
                if (l1 != null) {
                    if (l1 == 13) {
                        map.put("行次", l1);
                        map.put("項目", "成本1");
                        l.add(map);
                    } else {
                        map.put("行次", l1);
                        map.put("項目", l2);
                        l.add(map);
                    }
                }
            }
            JSONArray jsonArray = JSONArray.fromObject(l);
            System.out.println(jsonArray);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Test
    public void test3() {
        String readPath = "D:\\5.xlsx";
        try {
            Sheet sheet = new Sheet(1, 5, ZcfzbmjfylzzGridlb.class);
            List<Object> readList = EasyExcelFactory.read(new FileInputStream(readPath), sheet);
            LinkedList<Object> l = new LinkedList<>();
            for (Object obj : readList) {
                Long l1 = ((ZcfzbmjfylzzGridlb) obj).getEwbhxh();
                String l2 = ((ZcfzbmjfylzzGridlb) obj).getZcxmmc();
                BigDecimal l3 = ((ZcfzbmjfylzzGridlb) obj).getNcyeZc();
                BigDecimal l4 = ((ZcfzbmjfylzzGridlb) obj).getQmyeZc();
                if (l1 != null) {
                    LinkedHashMap<String, Object> map1 = new LinkedHashMap<>();
                    map1.put("行次", l1);
                    l.add(map1);
                }
            }
            for (Object obj : readList) {
                Long l5 = ((ZcfzbmjfylzzGridlb) obj).getEwbhxh2();
                String l6 = ((ZcfzbmjfylzzGridlb) obj).getQyxmmc();
                BigDecimal l7 = ((ZcfzbmjfylzzGridlb) obj).getNcyeQy();
                BigDecimal l8 = ((ZcfzbmjfylzzGridlb) obj).getQmyeQy();
                if (l5 != null) {
                    LinkedHashMap<String, Object> map2 = new LinkedHashMap<>();
                    map2.put("行次", l5);
                    l.add(map2);
                }
            }
            JSONArray jsonArray = JSONArray.fromObject(l);
            System.out.println(jsonArray);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}
           

實體類

public class XjllbmjfylzzGridlb extends BaseRowModel {
    /** 二維表行序号 */
    /*index代表讀取的是excel的第幾列,從0開始*/
    @ExcelProperty(index = 1)
    private Long ewbhxh;
    
    /** 項目名稱 */
    @ExcelProperty(index = 0)
    private String xmmc;

    /** 金額 */
    @ExcelProperty(index = 2)
    private BigDecimal je;

    public XjllbmjfylzzGridlb() {
    }

    public XjllbmjfylzzGridlb(Long ewbhxh, String xmmc, BigDecimal je) {
        this.ewbhxh = ewbhxh;
        this.xmmc = xmmc;
        this.je = je;
    }

    public Long getEwbhxh() {
        return ewbhxh;
    }

    public void setEwbhxh(Long ewbhxh) {
        this.ewbhxh = ewbhxh;
    }

    public String getXmmc() {
        return xmmc;
    }

    public void setXmmc(String xmmc) {
        this.xmmc = xmmc;
    }

    public BigDecimal getJe() {
        return je;
    }

    public void setJe(BigDecimal je) {
        this.je = je;
    }
}