Java利用POI实现数据的Excel导出分列(相同标题换列输出)

使用Apache POI库在Java中实现数据的Excel导出并进行分列操作是一个常见的需求。下面是详细的步骤和示例代码,展示如何使用POI库实现这一目标。

步骤

  1. 添加POI依赖:确保项目中包含Apache POI库。如果使用Maven,可以在pom.xml中添加以下依赖:

    xml
    <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>5.2.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.2</version> </dependency>
  2. 创建数据模型:创建一个类来表示导出的数据。

  3. 生成Excel文件:使用POI库生成Excel文件,创建工作表和单元格,并填充数据。

  4. 分列操作:根据相同的标题换列输出数据。

示例代码

下面的示例展示如何实现上述步骤:

1. 添加POI依赖

确保在你的pom.xml中添加了POI依赖。

2. 创建数据模型

创建一个简单的数据模型类:

java
public class DataModel { private String category; private String value; public DataModel(String category, String value) { this.category = category; this.value = value; } public String getCategory() { return category; } public String getValue() { return value; } }

3. 生成Excel文件并进行分列操作

java
import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class ExcelExport { public static void main(String[] args) throws IOException { List<DataModel> dataList = new ArrayList<>(); dataList.add(new DataModel("Category1", "Value1")); dataList.add(new DataModel("Category2", "Value2")); dataList.add(new DataModel("Category1", "Value3")); dataList.add(new DataModel("Category2", "Value4")); Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Data"); Row headerRow = sheet.createRow(0); headerRow.createCell(0).setCellValue("Category1"); headerRow.createCell(1).setCellValue("Category2"); int rowNum = 1; int colCategory1 = 0; int colCategory2 = 1; for (DataModel data : dataList) { Row row = sheet.getRow(rowNum) != null ? sheet.getRow(rowNum) : sheet.createRow(rowNum); if ("Category1".equals(data.getCategory())) { row.createCell(colCategory1).setCellValue(data.getValue()); colCategory1 += 2; } else if ("Category2".equals(data.getCategory())) { row.createCell(colCategory2).setCellValue(data.getValue()); colCategory2 += 2; } if (colCategory1 > 0 && colCategory1 % 2 == 0 && colCategory2 > 0 && colCategory2 % 2 == 0) { rowNum++; colCategory1 = 0; colCategory2 = 1; } } try (FileOutputStream fileOut = new FileOutputStream("data.xlsx")) { workbook.write(fileOut); } workbook.close(); } }

详细解释

  1. 创建数据列表:初始化包含DataModel对象的数据列表。
  2. 创建工作簿和工作表:使用XSSFWorkbook创建一个新的Excel工作簿,并在其中创建一个工作表。
  3. 创建表头行:在工作表的第一行创建表头,分别命名为"Category1"和"Category2"。
  4. 填充数据:遍历数据列表,将数据根据类别填入对应的列,并根据相同标题换列输出。
  5. 写入文件:将工作簿内容写入Excel文件。

总结

使用Apache POI库可以方便地在Java中实现数据的Excel导出和分列操作。通过创建数据模型、生成Excel文件、进行分列操作,可以根据相同的标题换列输出数据,确保Excel文件结构清晰易读。

关键字

Java,Apache POI,Excel导出,数据分列,数据模型,工作簿,工作表,单元格,文件输出。