我要导出excel格式的
时间: 2023-07-09 17:52:24 浏览: 73
好的,以下是一个使用 Java 实现动态导出 Excel 的示例代码,其中使用了 Apache POI 库来进行 Excel 格式的处理:
```java
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
public class ExportExcelUtil {
public static void exportExcel(HttpServletResponse response, List<String> headers, List<List<Object>> rows, String fileName) throws IOException {
// 创建 Workbook 对象,并设置相关配置
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet();
// 添加表头
Row headerRow = sheet.createRow(0);
for (int i = 0; i < headers.size(); i++) {
Cell headerCell = headerRow.createCell(i);
headerCell.setCellValue(headers.get(i));
}
// 添加表格数据
for (int i = 0; i < rows.size(); i++) {
Row row = sheet.createRow(i + 1);
List<Object> rowData = rows.get(i);
for (int j = 0; j < rowData.size(); j++) {
Cell cell = row.createCell(j);
Object value = rowData.get(j);
if (value == null) {
cell.setCellValue("");
} else if (value instanceof Number) {
cell.setCellValue(((Number) value).doubleValue());
} else {
cell.setCellValue(value.toString());
}
}
}
// 自适应列宽
for (int i = 0; i < headers.size(); i++) {
sheet.autoSizeColumn(i);
}
// 关闭 Workbook 对象
workbook.close();
// 设置响应头,告知浏览器文件类型为 Excel,并设置文件名
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
// 将 Excel 格式的数据转换成 byte 数组,并输出到响应流中
ByteArrayOutputStream out = new ByteArrayOutputStream();
workbook.write(out);
response.getOutputStream().write(out.toByteArray());
response.flushBuffer();
}
}
```
使用时,可以传入要导出的表头数据和表格数据,以及要导出的文件名,调用该方法即可实现导出:
```java
List<String> headers = Arrays.asList("姓名", "年龄", "性别");
List<List<Object>> rows = new ArrayList<>();
rows.add(Arrays.asList("张三", 20, "男"));
rows.add(Arrays.asList("李四", 25, "女"));
rows.add(Arrays.asList("王五", 30, "男"));
ExportExcelUtil.exportExcel(response, headers, rows, "example.xlsx");
```
阅读全文