Java Excel多表头导出 及导出对象中包含集合导出
要在Java中使用Excel多表头导出,可以使用Apache POI库来处理Excel文件。以下是一个示例代码,演示了如何使用Apache POI来导出具有多个表头的Excel文件:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
public class ExcelExporter {
public static void exportData(List<Map<String, Object>> dataList, List<String> headers, String filePath) throws IOException {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Data");
// 创建表头
Row headerRow = sheet.createRow(0);
CellStyle headerStyle = workbook.createCellStyle();
Font headerFont = workbook.createFont();
headerFont.setBold(true);
headerStyle.setFont(headerFont);
for (int i = 0; i < headers.size(); i++) {
Cell cell = headerRow.createCell(i);
cell.setCellValue(headers.get(i));
cell.setCellStyle(headerStyle);
}
// 填充数据
int rowNum = 1;
for (Map<String, Object> data : dataList) {
Row row = sheet.createRow(rowNum++);
int cellNum = 0;
for (String header : headers) {
Cell cell = row.createCell(cellNum++);
Object value = data.get(header);
if (value instanceof List) {
// 处理集合类型数据
List<?> listValue = (List<?>) value;
String strValue = Arrays.toString(listValue.toArray());
cell.setCellValue(strValue);
} else {
// 处理其他类型数据
cell.setCellValue(value.toString());
}
}
}
// 调整列宽
for (int i = 0; i < headers.size(); i++) {
sheet.autoSizeColumn(i);
}
// 保存文件
try (FileOutputStream outputStream = new FileOutputStream(filePath)) {
workbook.write(outputStream);
}
}
public static void main(String[] args) {
List<Map<String, Object>> dataList = Arrays.asList(
Map.of("Name", "John", "Age", 25, "Hobbies", Arrays.asList("Reading", "Cooking")),
Map.of("Name", "Jane", "Age", 30, "Hobbies", Arrays.asList("Gardening", "Painting"))
);
List<String> headers = Arrays.asList("Name", "Age", "Hobbies");
String filePath = "output.xlsx";
try {
exportData(dataList, headers, filePath);
System.out.println("Data exported successfully.");
} catch (IOException e) {
System.out.println("Error exporting data: " + e.getMessage());
}
}
}
在上面的示例代码中,exportData方法接受一个包含数据的dataList,一个包含表头的headers列表和导出文件的路径filePath。它使用Apache POI创建一个Workbook对象,并在其中创建一个名为"Data"的工作表。然后,它使用表头列表创建一个表头行,并为每个表头单元格应用样式。接下来,它遍历数据列表,为每一行创建一个新行,并为每个单元格设置相应的值。如果数据是一个集合类型,它将其转换为字符串,并将其写入单元格。最后,它调整每列的宽度,并将工作簿保存到指定的文件路径。
此外,如果要导出的对象中包含集合,可以按照上面的示例代码中的方式处理。在示例中,如果dataList中的某个数据的值是一个集合,它将集合转换为字符串,并将其写入Excel单元格。
希望这可以帮助你实现Java中的Excel多表头导出并导出对象中包含集合的需求
原文地址: http://www.cveoy.top/t/topic/hJmS 著作权归作者所有。请勿转载和采集!