java Excel 导出[object:object]
时间: 2023-12-06 09:02:30 浏览: 37
要将一个对象数组导出为 Excel 文件,可以使用 Apache POI 库来实现。下面是一个简单的示例代码:
```java
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
import java.io.FileOutputStream;
import java.util.List;
public class ExcelExporter {
public static void export(List<Object> objects, String filename) throws Exception {
// 创建工作簿和工作表
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("Sheet1");
// 创建标题行
XSSFRow headerRow = sheet.createRow(0);
Object firstObject = objects.get(0);
int cellNum = 0;
for (java.lang.reflect.Field field : firstObject.getClass().getDeclaredFields()) {
XSSFCell cell = headerRow.createCell(cellNum++);
cell.setCellValue(field.getName());
}
// 填充数据
int rowNum = 1;
for (Object object : objects) {
XSSFRow row = sheet.createRow(rowNum++);
cellNum = 0;
for (java.lang.reflect.Field field : object.getClass().getDeclaredFields()) {
field.setAccessible(true);
Object value = field.get(object);
XSSFCell cell = row.createCell(cellNum++);
if (value instanceof String) {
cell.setCellValue((String) value);
} else if (value instanceof Integer) {
cell.setCellValue((Integer) value);
} else if (value instanceof Double) {
cell.setCellValue((Double) value);
} else if (value instanceof Float) {
cell.setCellValue((Float) value);
} else if (value instanceof Long) {
cell.setCellValue((Long) value);
} else if (value instanceof Boolean) {
cell.setCellValue((Boolean) value);
} else {
cell.setCellValue(value.toString());
}
}
}
// 保存文件
FileOutputStream outputStream = new FileOutputStream(filename);
workbook.write(outputStream);
workbook.close();
outputStream.close();
}
}
```
在上面的代码中,我们使用了反射来获取对象的字段信息,并根据字段类型对单元格进行赋值。使用方法如下:
```java
List<Object> objects = new ArrayList<>();
// 添加对象到列表中
ExcelExporter.export(objects, "output.xlsx");
```
这将会在当前目录下创建一个名为 `output.xlsx` 的 Excel 文件。