Java实现Excel导出功能
在Java开发中,我们经常需要将数据导出到Excel文件中,以便于数据的查看和分析,Java提供了多种方式来实现Excel的导出功能,其中最常用的是Apache POI库,本文将详细介绍如何使用Java和Apache POI库实现Excel的导出功能。
我们需要在项目中引入Apache POI库,如果你使用的是Maven项目,可以在pom.xml文件中添加以下依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
接下来,我们创建一个Java类,用于实现Excel的导出功能,在这个类中,我们将定义一个方法,该方法接收一个List对象作为参数,然后将这个List中的数据导出到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.List;
public class ExcelExporter {
public void exportToExcel(List<String[]> data, String fileName) {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
// 创建表头
Row headerRow = sheet.createRow(0);
for (int i = 0; i < data.get(0).length; i++) {
Cell cell = headerRow.createCell(i);
cell.setCellValue(data.get(0)[i]);
}
// 填充数据
for (int i = 1; i < data.size(); i++) {
Row row = sheet.createRow(i);
for (int j = 0; j < data.get(i).length; j++) {
Cell cell = row.createCell(j);
cell.setCellValue(data.get(i)[j]);
}
}
// 自动调整列宽
for (int i = 0; i < data.get(0).length; i++) {
sheet.autoSizeColumn(i);
}
// 将数据写入文件
try (FileOutputStream fileOut = new FileOutputStream(fileName)) {
workbook.write(fileOut);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
workbook.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
现在,我们可以使用这个ExcelExporter类来将数据导出到Excel文件中,我们可以创建一个包含一些数据的List对象,然后调用exportToExcel方法将其导出到Excel文件中。
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String[]> data = Arrays.asList(new String[]{"姓名", "年龄", "性别"}, new String[]{"张三", "25", "男"}, new String[]{"李四", "30", "女"});
ExcelExporter exporter = new ExcelExporter();
exporter.exportToExcel(data, "output.xlsx");
}
}
运行上述代码后,会在项目根目录下生成一个名为output.xlsx的Excel文件,其中包含了我们刚刚导出的数据。



还没有评论,来说两句吧...