| | |
| | | import cn.idev.excel.metadata.CellExtra; |
| | | import cn.iocoder.yudao.framework.common.util.http.HttpUtils; |
| | | import cn.iocoder.yudao.framework.excel.core.handler.ColumnWidthMatchStyleStrategy; |
| | | import cn.iocoder.yudao.framework.excel.core.handler.RequiredHeaderWriteHandler; |
| | | import cn.iocoder.yudao.framework.excel.core.handler.SelectSheetWriteHandler; |
| | | import jakarta.servlet.http.HttpServletResponse; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | |
| | | public static <T> void write(HttpServletResponse response, String filename, String sheetName, |
| | | Class<T> head, List<T> data) throws IOException { |
| | | // 输出 Excel |
| | | ExcelWriter excelWriter = FastExcelFactory.write(response.getOutputStream(), head) |
| | | var builder = FastExcelFactory.write(response.getOutputStream(), head) |
| | | .autoCloseStream(false) // 不要自动关闭,交给 Servlet 自己处理 |
| | | .registerWriteHandler(new ColumnWidthMatchStyleStrategy()) // 基于 column 长度,自动适配。最大 255 宽度 |
| | | .registerWriteHandler(new SelectSheetWriteHandler(head)) // 基于固定 sheet 实现下拉框 |
| | | .registerConverter(new LongStringConverter()) // 避免 Long 类型丢失精度 |
| | | .build(); |
| | | .registerConverter(new LongStringConverter()); // 避免 Long 类型丢失精度 |
| | | if (filename.contains("模板")) builder.registerWriteHandler(new RequiredHeaderWriteHandler()); |
| | | ExcelWriter excelWriter = builder.build(); |
| | | try { |
| | | excelWriter.write(data, FastExcelFactory.writerSheet(sheetName).build()); |
| | | } finally { |