Java利用POI实现数据的Excel导出分列(相同标题换列输出)
使用Apache POI库在Java中实现数据的Excel导出并进行分列操作是一个常见的需求。下面是详细的步骤和示例代码,展示如何使用POI库实现这一目标。
步骤
添加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>
创建数据模型:创建一个类来表示导出的数据。
生成Excel文件:使用POI库生成Excel文件,创建工作表和单元格,并填充数据。
分列操作:根据相同的标题换列输出数据。
示例代码
下面的示例展示如何实现上述步骤:
1. 添加POI依赖
确保在你的pom.xml
中添加了POI依赖。
2. 创建数据模型
创建一个简单的数据模型类:
javapublic 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文件并进行分列操作
javaimport 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();
}
}
详细解释
- 创建数据列表:初始化包含
DataModel
对象的数据列表。 - 创建工作簿和工作表:使用
XSSFWorkbook
创建一个新的Excel工作簿,并在其中创建一个工作表。 - 创建表头行:在工作表的第一行创建表头,分别命名为"Category1"和"Category2"。
- 填充数据:遍历数据列表,将数据根据类别填入对应的列,并根据相同标题换列输出。
- 写入文件:将工作簿内容写入Excel文件。
总结
使用Apache POI库可以方便地在Java中实现数据的Excel导出和分列操作。通过创建数据模型、生成Excel文件、进行分列操作,可以根据相同的标题换列输出数据,确保Excel文件结构清晰易读。
关键字
Java,Apache POI,Excel导出,数据分列,数据模型,工作簿,工作表,单元格,文件输出。