Java如何将List<User>数据,直接生成excel文件保存到电脑本地
时间: 2024-01-21 11:18:07 浏览: 39
Java可以使用Apache POI库将List<User>数据生成Excel文件并保存到电脑本地。具体步骤如下:
1. 添加Apache POI库的依赖。在Maven项目中,在pom.xml文件中添加以下依赖:
```xml
<!-- Apache POI -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
</dependency>
```
2. 创建工作簿和工作表对象,并设置列名和列宽。
```java
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("用户列表");
String[] headers = {"ID", "姓名", "年龄", "邮箱"};
int[] widths = {10, 20, 10, 30};
Row headerRow = sheet.createRow(0);
for (int i = 0; i < headers.length; i++) {
Cell cell = headerRow.createCell(i);
cell.setCellValue(headers[i]);
sheet.setColumnWidth(i, widths[i] * 256); // 设置列宽,需要乘以256
}
```
3. 遍历List<User>数据,将每个User对象的属性值写入Excel中。
```java
int rowIndex = 1;
for (User user : userList) {
Row row = sheet.createRow(rowIndex++);
Cell idCell = row.createCell(0);
idCell.setCellValue(user.getId());
Cell nameCell = row.createCell(1);
nameCell.setCellValue(user.getName());
Cell ageCell = row.createCell(2);
ageCell.setCellValue(user.getAge());
Cell emailCell = row.createCell(3);
emailCell.setCellValue(user.getEmail());
}
```
4. 将生成的Excel文件保存到电脑本地。
```java
String filePath = "C:/users.xlsx";
FileOutputStream outputStream = new FileOutputStream(filePath);
workbook.write(outputStream);
outputStream.close();
```
完整的代码如下所示:
```java
import java.io.FileOutputStream;
import java.util.List;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelUtil {
public static void writeUsersToExcel(List<User> userList) throws Exception {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("用户列表");
String[] headers = {"ID", "姓名", "年龄", "邮箱"};
int[] widths = {10, 20, 10, 30};
Row headerRow = sheet.createRow(0);
for (int i = 0; i < headers.length; i++) {
Cell cell = headerRow.createCell(i);
cell.setCellValue(headers[i]);
sheet.setColumnWidth(i, widths[i] * 256); // 设置列宽,需要乘以256
}
int rowIndex = 1;
for (User user : userList) {
Row row = sheet.createRow(rowIndex++);
Cell idCell = row.createCell(0);
idCell.setCellValue(user.getId());
Cell nameCell = row.createCell(1);
nameCell.setCellValue(user.getName());
Cell ageCell = row.createCell(2);
ageCell.setCellValue(user.getAge());
Cell emailCell = row.createCell(3);
emailCell.setCellValue(user.getEmail());
}
String filePath = "C:/users.xlsx";
FileOutputStream outputStream = new FileOutputStream(filePath);
workbook.write(outputStream);
outputStream.close();
}
}
```
注意:在使用Apache POI库生成Excel文件时,需要依赖于Java运行时环境中的zip和xml解析模块,因此在运行时需要保证这些模块可用。如果出现依赖问题,可以尝试手动添加这些模块的依赖。