以下是一个简单的 Java 导出下载工具类示例,可以使用它来将数据导出为 Excel 或 CSV 文件并提供下载链接。

public class ExportDownloadUtil {
    
    /**
     * 导出数据为 Excel 文件并提供下载链接
     * @param response HttpServletResponse 对象
     * @param dataList 要导出的数据列表
     * @param fileName 导出的文件名
     * @param sheetName 导出的工作表名
     * @param headers Excel 表头数组
     * @param fields 要导出的字段名数组
     * @throws IOException
     */
    public static void exportExcel(HttpServletResponse response, List<?> dataList, String fileName, String sheetName, String[] headers, String[] fields) throws IOException {
        // 创建 Excel 工作簿
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet(sheetName);
        // 创建表头行
        Row headerRow = sheet.createRow(0);
        for (int i = 0; i < headers.length; i++) {
            Cell cell = headerRow.createCell(i);
            cell.setCellValue(headers[i]);
        }
        // 填充数据行
        for (int i = 0; i < dataList.size(); i++) {
            Row dataRow = sheet.createRow(i + 1);
            Object obj = dataList.get(i);
            for (int j = 0; j < fields.length; j++) {
                try {
                    String field = fields[j];
                    Field f = obj.getClass().getDeclaredField(field);
                    f.setAccessible(true);
                    Cell cell = dataRow.createCell(j);
                    Object value = f.get(obj);
                    if (value != null) {
                        if (value instanceof Date) {
                            SimpleDateFormat dateFormat = new SimpleDateFormat('yyyy-MM-dd HH:mm:ss');
                            cell.setCellValue(dateFormat.format((Date) value));
                        } else {
                            cell.setCellValue(value.toString());
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        // 设置响应头
        response.setContentType('application/vnd.ms-excel');
        response.setHeader('Content-Disposition', 'attachment;filename=' + fileName);
        // 将 Excel 数据写入响应输出流
        workbook.write(response.getOutputStream());
        workbook.close();
    }
    
    /**
     * 导出数据为 CSV 文件并提供下载链接
     * @param response HttpServletResponse 对象
     * @param dataList 要导出的数据列表
     * @param fileName 导出的文件名
     * @param headers CSV 表头数组
     * @param fields 要导出的字段名数组
     * @throws IOException
     */
    public static void exportCsv(HttpServletResponse response, List<?> dataList, String fileName, String[] headers, String[] fields) throws IOException {
        // 创建 CSV 数据字符串
        StringBuilder sb = new StringBuilder();
        // 添加表头
        for (int i = 0; i < headers.length; i++) {
            sb.append(headers[i]).append(',');
        }
        sb.append('\n');
        // 添加数据
        for (int i = 0; i < dataList.size(); i++) {
            Object obj = dataList.get(i);
            for (int j = 0; j < fields.length; j++) {
                try {
                    String field = fields[j];
                    Field f = obj.getClass().getDeclaredField(field);
                    f.setAccessible(true);
                    Object value = f.get(obj);
                    if (value != null) {
                        if (value instanceof Date) {
                            SimpleDateFormat dateFormat = new SimpleDateFormat('yyyy-MM-dd HH:mm:ss');
                            sb.append(dateFormat.format((Date) value));
                        } else {
                            sb.append(value.toString());
                        }
                    }
                    sb.append(',');
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            sb.append('\n');
        }
        // 设置响应头
        response.setContentType('text/csv');
        response.setHeader('Content-Disposition', 'attachment;filename=' + fileName);
        // 将 CSV 数据写入响应输出流
        response.getWriter().write(sb.toString());
    }
    
}

使用示例:

// 导出为 Excel 并提供下载链接
List<User> userList = userService.getUserList();
String[] headers = {'ID', '姓名', '年龄', '性别', '创建时间'};
String[] fields = {'id', 'name', 'age', 'gender', 'createTime'};
ExportDownloadUtil.exportExcel(response, userList, 'userList.xlsx', '用户列表', headers, fields);

// 导出为 CSV 并提供下载链接
List<Order> orderList = orderService.getOrderList();
String[] headers = {'订单号', '商品名称', '数量', '单价', '总价', '下单时间'};
String[] fields = {'orderId', 'productName', 'quantity', 'price', 'totalPrice', 'createTime'};
ExportDownloadUtil.exportCsv(response, orderList, 'orderList.csv', headers, fields);

原文地址: http://www.cveoy.top/t/topic/nZwW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录