java 使用反射将数据写入Excel

本文介绍了一个使用Java进行批量写入Excel文件的方法。该方法通过指定文件名、工作表名、对象列表及字段映射来创建Excel文件,并实现了对私有字段的访问。此示例适用于需要批量导出数据至Excel表格的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 public void writeData(String fileName, String sheetName, List<Object> list, Map<String, String> colMap)
            throws IOException, WriteException, IllegalAccessException, NoSuchFieldException {
        File file = new File(fileName);
        file.createNewFile();
        OutputStream os = new FileOutputStream(file);
        WritableWorkbook wwb = Workbook.createWorkbook(os);
        WritableSheet writableSheet = wwb.createSheet(sheetName, 0);

        int rowIndex = 0;
        int colIndex = 0;
        Iterator iterator = colMap.entrySet().iterator();
        List<String> colList = new ArrayList<>();

        while (iterator.hasNext()) {
            Map.Entry entry = (Map.Entry) iterator.next();
            colList.add(entry.getValue().toString());

            WritableFont wf = new WritableFont(WritableFont.createFont("宋体"), 10, WritableFont.BOLD, false);
            WritableCellFormat wcf = new WritableCellFormat(wf);
            Label label = new Label(colIndex, rowIndex, entry.getKey().toString(), wcf);
            writableSheet.addCell(label);
            colIndex++;
        }

        rowIndex++;

        for (Object obj :
                list) {
            colIndex = 0;
            for (String str :
                    colList) {
                Field field = obj.getClass().getDeclaredField(str);
                field.setAccessible(true);
                Label label = new Label(colIndex, rowIndex, field.get(obj).toString());
                writableSheet.addCell(label);
                colIndex++;
            }
            rowIndex++;
        }

        wwb.write();
        wwb.close();
        os.flush();
        os.close();

    }

field.setAccessible(true); 这个设置可以访问到private的值。

Map

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值