java导出excel 生产多行表头
时间: 2023-06-18 14:03:26 浏览: 189
java实现导出Excel多行表头复杂模板
3星 · 编辑精心推荐
在Java中实现多行表头的导出Excel可以使用Apache POI库。下面是一个简单的示例代码,其中包括三个表头行和两个数据行:
```java
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.IndexedColors;
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 ExcelExporter {
public static void export(String[][] data) throws IOException {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
// 创建表头行1
Row headerRow1 = sheet.createRow(0);
CellStyle headerStyle1 = workbook.createCellStyle();
headerStyle1.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
headerStyle1.setFillPattern(CellStyle.SOLID_FOREGROUND);
// 设置表头行高
headerRow1.setHeightInPoints(30);
// 创建表头单元格
for (int i = 0; i < data[0].length; i++) {
Cell cell = headerRow1.createCell(i);
cell.setCellValue(data[0][i]);
cell.setCellStyle(headerStyle1);
}
// 合并表头行1
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 2));
// 创建表头行2
Row headerRow2 = sheet.createRow(1);
CellStyle headerStyle2 = workbook.createCellStyle();
headerStyle2.setFillForegroundColor(IndexedColors.GREY_40_PERCENT.getIndex());
headerStyle2.setFillPattern(CellStyle.SOLID_FOREGROUND);
// 设置表头行高
headerRow2.setHeightInPoints(30);
// 创建表头单元格
Cell cell = headerRow2.createCell(0);
cell.setCellValue("Header 1");
cell.setCellStyle(headerStyle2);
cell = headerRow2.createCell(1);
cell.setCellValue("Header 2");
cell.setCellStyle(headerStyle2);
cell = headerRow2.createCell(2);
cell.setCellValue("Header 3");
cell.setCellStyle(headerStyle2);
// 合并表头行2
sheet.addMergedRegion(new CellRangeAddress(1, 2, 0, 0));
sheet.addMergedRegion(new CellRangeAddress(1, 1, 1, 2));
// 创建表头行3
Row headerRow3 = sheet.createRow(2);
CellStyle headerStyle3 = workbook.createCellStyle();
headerStyle3.setFillForegroundColor(IndexedColors.GREY_40_PERCENT.getIndex());
headerStyle3.setFillPattern(CellStyle.SOLID_FOREGROUND);
// 设置表头行高
headerRow3.setHeightInPoints(30);
// 创建表头单元格
cell = headerRow3.createCell(1);
cell.setCellValue("Sub Header 1");
cell.setCellStyle(headerStyle3);
cell = headerRow3.createCell(2);
cell.setCellValue("Sub Header 2");
cell.setCellStyle(headerStyle3);
// 创建数据行
for (int i = 0; i < data.length - 1; i++) {
Row dataRow = sheet.createRow(i + 3);
for (int j = 0; j < data[i + 1].length; j++) {
Cell dataCell = dataRow.createCell(j);
dataCell.setCellValue(data[i + 1][j]);
}
}
// 调整列宽
for (int i = 0; i < data[0].length; i++) {
sheet.autoSizeColumn(i);
}
// 导出Excel文件
FileOutputStream outputStream = new FileOutputStream("output.xlsx");
workbook.write(outputStream);
workbook.close();
outputStream.close();
}
}
```
其中,`data`是一个二维数组,第一行是表头,其余行是数据。在代码中,我们创建了三个表头行,分别为“Header 1”、“Header 2”和“Sub Header 1/Sub Header 2”。我们使用`sheet.addMergedRegion`方法将单元格合并以创建多行表头。最后,我们将数据写入Excel文件并导出。你可以根据实际需求修改代码。
阅读全文