导出Excel是一项常见的任务,可以用来生成报表、导出数据等。在Java中,我们可以使用流行的Apache POI库来进行Excel操作。下面是一个简单的步骤指南:
- 导入依赖
首先,需要在项目中添加Apache POI的依赖。在Maven项目中,你可以在pom.xml文件中添加以下代码:
<dependencies>
<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>
</dependencies>
- 创建Excel文档
接下来,使用Apache POI创建一个Excel文档。首先,创建一个工作簿(Workbook),然后在工作簿中创建一个工作表(Sheet)。这是一个简单的示例:
// 创建工作簿
Workbook workbook = new XSSFWorkbook();
// 创建工作表
Sheet sheet = workbook.createSheet("Sheet1");
// 创建行
Row row = sheet.createRow(0);
// 创建单元格并设置值
Cell cell = row.createCell(0);
cell.setCellValue("Hello, World!");
// 保存Excel文件
FileOutputStream outputStream = new FileOutputStream("output.xlsx");
workbook.write(outputStream);
workbook.close();
outputStream.close();
- 添加数据
创建Excel文件后,我们可以通过添加数据来填充单元格。这是一个示例,展示如何添加多行数据到Excel:
for (int i = 0; i < data.size(); i++) {
Row row = sheet.createRow(i);
List<Object> rowData = data.get(i);
for (int j = 0; j < rowData.size(); j++) {
Cell cell = row.createCell(j);
cell.setCellValue(rowData.get(j).toString());
}
}
- 设置样式
如果你想对Excel中的单元格进行格式设置,可以使用Apache POI提供的样式类。例如,设置单元格背景色和字体样式:
CellStyle style = workbook.createCellStyle();
// 设置背景色
style.setFillForegroundColor(IndexedColors.LIGHT_YELLOW.getIndex());
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
// 设置字体样式
Font font = workbook.createFont();
font.setFontName("Arial");
font.setFontHeightInPoints((short) 12);
font.setBold(true);
style.setFont(font);
// 应用样式到单元格
cell.setCellStyle(style);
- 保存与关闭
当完成Excel文档的创建、数据的填充和样式的设置后,别忘了保存并关闭文档和输出流:
FileOutputStream outputStream = new FileOutputStream("output.xlsx");
workbook.write(outputStream);
workbook.close();
outputStream.close();
以上是一个简单的介绍,希望对你理解如何使用Java导出Excel有所帮助。你可以根据你的需求,进一步探索Apache POI库提供的更多功能和选项。
6. 通用工具类
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 static void exportToExcel(List<List<Object>> data, String filePath) throws IOException {
// 创建工作簿
Workbook workbook = new XSSFWorkbook();
// 创建工作表
Sheet sheet = workbook.createSheet("Sheet1");
// 添加数据
for (int i = 0; i < data.size(); i++) {
Row row = sheet.createRow(i);
List<Object> rowData = data.get(i);
for (int j = 0; j < rowData.size(); j++) {
Cell cell = row.createCell(j);
cell.setCellValue(rowData.get(j).toString());
}
}
// 保存Excel文件
try (FileOutputStream outputStream = new FileOutputStream(filePath)) {
workbook.write(outputStream);
workbook.close();
}
}
public static void setCellStyle(Cell cell, IndexedColors backgroundColor, Font font) {
Workbook workbook = cell.getSheet().getWorkbook();
CellStyle style = workbook.createCellStyle();
// 设置背景色
style.setFillForegroundColor(backgroundColor.getIndex());
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
// 设置字体样式
style.setFont(font);
// 应用样式到单元格
cell.setCellStyle(style);
}
}
这个工具类中的exportToExcel
方法接受一个包含数据的二维列表和一个指定的文件路径作为参数,并将数据导出为Excel文件。setCellStyle
方法用于设置单元格的样式,接受一个单元格、背景色和字体作为参数。
使用这个工具类时,只需要按照以下方式调用:
List<List<Object>> data = new ArrayList<>();
// 添加数据到data列表...
String filePath = "output.xlsx";
try {
ExcelExporter.exportToExcel(data, filePath);
System.out.println("导出成功!");
} catch (IOException e) {
System.err.println("导出发生错误: " + e.getMessage());
}
这样,你就可以方便地使用这个通用的工具类来导出Excel文件。