一个导出Excel的工具类

原理就是建一个与标题数对应的dto,然后通过反射依次填入。
public XSSFWorkbook exportByUtil() {
        String[] title1 = {"日期","当前总订单数","01:00回款率","02:00回款率","03:00回款率","04:00回款率 ","05:00回款率","06:00回款率","07:00回款率","08:00回款率","09:00回款率","10:00回款率","11:00回款率",
                "12:00回款率","13:00回款率","14:00回款率","15:00回款率","16:00回款率","17:00回款率","18:00回款率","19:00回款率","20:00回款率","21:00回款率","22:00回款率","23:00回款率","24:00回款率","差值"};
        EveryBackMoneyExample example = new EveryBackMoneyExample();
        example.setOrderByClause("gmt_create desc");
        List<EveryBackMoney> list =everyBackMoneyMapper.selectByExample(example);
        List<EveryBackMoneyExcelDto> copyList = new ArrayList<>();
        for(EveryBackMoney every:list){
            EveryBackMoneyExcelDto dto = new EveryBackMoneyExcelDto();
            BeanUtils.copyProperties(every,dto);
            copyList.add(dto);
        }
        String header="历史回款率统计";
        XSSFWorkbook wb = ExcelUtil.createExcel(header,title1,copyList);
        return wb;
    }

public static XSSFWorkbook createExcel(String header,String[] title1,List<?>list) {
        try{
            XSSFWorkbook wb = new XSSFWorkbook();
            XSSFSheet sheet = wb.createSheet(header);
            sheet.setDefaultColumnWidth(40);
            XSSFRow row = sheet.createRow(0);
            XSSFCellStyle style = wb.createCellStyle();
            style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
            XSSFCell cell;
            //创建合并表头
            for(int i =0;i<title1.length;i++){
                cell = row.createCell((short) i);
                cell.setCellValue(title1[i]);
                cell.setCellStyle(style);
            }

            for(int y=0;y<list.size();y++){
                XSSFRow rows = sheet.createRow(y+1);
                Object dto = list.get(y);
                Class clazz = dto.getClass();
                Field[] fileds = clazz.getDeclaredFields();
                for(int i=0;i<fileds.length;i++) {
                    char c = fileds[i].getName().charAt(0);
                    c -= 32;
                    String mname = c+fileds[i].getName().substring(1);
                    Method method = clazz.getMethod("get" + mname);
                    Object obj = method.invoke(dto, null);
                    if(obj!=null) {
                        if (fileds[i].getType() == Date.class) {
                            SimpleDateFormat sdf = new SimpleDateFormat(
                                    fileds[i] .getAnnotation(DateTimeFormat.class).pattern());
                            obj = sdf.format(obj);
                        }
                    }else{
                        obj="";
                    }

                    rows.createCell((short) i).setCellValue(obj.toString());
                }

            }
            return wb;
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的 Java 工具类,可以将数据导出Excel 文件: ```java import java.io.FileOutputStream; import java.io.IOException; import java.util.List; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ExcelUtils { public static void exportToExcel(List<List<Object>> data, String fileName) throws IOException { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet(); int rowCount = 0; for (List<Object> rowData : data) { Row row = sheet.createRow(rowCount++); int columnCount = 0; for (Object field : rowData) { Cell cell = row.createCell(columnCount++); if (field instanceof String) { cell.setCellValue((String) field); } else if (field instanceof Integer) { cell.setCellValue((Integer) field); } else if (field instanceof Double) { cell.setCellValue((Double) field); } } } try (FileOutputStream outputStream = new FileOutputStream(fileName)) { workbook.write(outputStream); } } } ``` 使用方法: ```java List<List<Object>> data = new ArrayList<>(); List<Object> row1 = Arrays.asList("Name", "Age", "Salary"); List<Object> row2 = Arrays.asList("John", 25, 5000.0); List<Object> row3 = Arrays.asList("Jane", 30, 7000.0); data.add(row1); data.add(row2); data.add(row3); ExcelUtils.exportToExcel(data, "output.xlsx"); ``` 该工具类使用 Apache POI 库来处理 Excel 文件。注意,该类仅支持导出 xlsx 格式的文件,如需支持 xls 格式的文件,需要修改代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值