Java导出Excel增加序号列
在Java中,我们经常会遇到需要将数据导出为Excel文件的需求。而有时候,我们希望在导出的Excel文件中增加一个序号列,以方便查看和排序数据。本文将介绍如何使用Java导出Excel并增加序号列。
准备工作
在开始之前,我们需要引入一个用于操作Excel文件的Java库。这里我们选择使用Apache POI库。首先,我们需要在项目的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的逻辑。我们可以使用Spring Boot框架来简化开发过程。首先,我们需要在pom.xml文件中添加以下依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
然后,我们创建一个名为ExcelExporter
的Java类,并使用@RestController
注解将其声明为一个Web服务:
@RestController
public class ExcelExporter {
// 导出Excel的逻辑代码
}
导出Excel并增加序号列
为了演示目的,我们假设我们有一个名为dataList
的列表,其中包含了要导出的数据。每个数据项包含了姓名和年龄两个字段。我们要在导出的Excel文件中增加一个序号列,并显示每个数据项的序号。
首先,我们需要创建一个Workbook
对象,用于保存Excel文件的内容:
Workbook workbook = new XSSFWorkbook();
然后,我们创建一个Sheet
对象,并指定其名称:
Sheet sheet = workbook.createSheet("Data");
接下来,我们创建一个Row
对象,并在第一行中创建列标题:
Row headerRow = sheet.createRow(0);
Cell headerCell = headerRow.createCell(0);
headerCell.setCellValue("序号");
headerCell = headerRow.createCell(1);
headerCell.setCellValue("姓名");
headerCell = headerRow.createCell(2);
headerCell.setCellValue("年龄");
然后,我们遍历dataList
列表,并将其中的数据写入Excel文件中:
for (int i = 0; i < dataList.size(); i++) {
Row dataRow = sheet.createRow(i + 1);
Cell dataCell = dataRow.createCell(0);
dataCell.setCellValue(i + 1);
dataCell = dataRow.createCell(1);
dataCell.setCellValue(dataList.get(i).getName());
dataCell = dataRow.createCell(2);
dataCell.setCellValue(dataList.get(i).getAge());
}
最后,我们将Workbook
对象写入一个文件中,并关闭文件流:
try (FileOutputStream outputStream = new FileOutputStream("data.xlsx")) {
workbook.write(outputStream);
workbook.close();
}
完整代码示例
下面是完整的Java类代码示例:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@RestController
public class ExcelExporter {
@GetMapping("/export")
public String exportExcel() throws IOException {
List<Data> dataList = getDataList();
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Data");
Row headerRow = sheet.createRow(0);
Cell headerCell = headerRow.createCell(0);
headerCell.setCellValue("序号");
headerCell = headerRow.createCell(1);
headerCell.setCellValue("姓名");
headerCell = headerRow.createCell(2);
headerCell.setCellValue("年龄");
for (int i = 0; i < dataList.size(); i++) {
Row dataRow = sheet.createRow(i + 1);
Cell dataCell = dataRow.createCell(0);
dataCell.setCellValue(i + 1);
dataCell = dataRow.createCell(1);
dataCell.setCellValue(dataList.get(i).getName());
dataCell = dataRow.createCell(2);
dataCell.setCellValue(dataList.get(i).getAge());
}
try (FileOutputStream outputStream = new FileOutputStream("data.xlsx")) {
workbook.write(outputStream);
workbook.close();
}
return "Excel exported successfully!";