java - 使用 Apache POI HSSF 在 Excel 中存储 ArrayList
问题描述
我有一个数据列表:
List data1 = (List) session.getAttribute("data");
现在,我希望将这些数据存储在 Excel 文件中:
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("Excel Sheet");
HSSFRow rowhead = sheet.createRow((short) 0);
rowhead.createCell((short) 0).setCellValue("lOGINID");
rowhead.createCell((short) 1).setCellValue("CUSTOMERID");
rowhead.createCell((short) 2).setCellValue("updatetime");
int index = 1;
for (itr = data1.iterator(); itr.hasNext(); ) {
// what to write here?
}
解决方案
您还没有明确说明您的列表包含什么。List data1 = (List) session.getAttribute("data");
它必须是List<SomeClass>
。
您可以简单地遍历列表,将对象拉到当前索引上,创建新行并填充单元格中的值
for (int i = 0; i < data1.size(); i++) { //iterate over the list
SomeClass data = data1.get(i);//pull the object on current index i
HSSFRow row = sheet.createRow(i + 1); //create new row
//fill the values
row.createCell(0).setCellValue(data.field1);
row.createCell(1).setCellValue(data.field2);
row.createCell(2).setCellValue(data.field3);
假设列表包含的完整示例RowData
:
import lombok.AllArgsConstructor;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
void writeList() throws IOException {
//read data , RowData can be different in your case
List<RowData> data1 = (List<RowData>) session.getAttribute("data");
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("Excel Sheet");
HSSFRow rowhead = sheet.createRow(0); //header
rowhead.createCell(0).setCellValue("lOGINID");
rowhead.createCell(1).setCellValue("CUSTOMERID");
rowhead.createCell(2).setCellValue("updatetime");
for (int i = 0; i < data1.size(); i++) {
RowData data = data1.get(i);//rows
HSSFRow row = sheet.createRow(i + 1);
row.createCell(0).setCellValue(data.loginId);
row.createCell(1).setCellValue(data.customerId);
row.createCell(2).setCellValue(data.time);
}
//write to file
try (FileOutputStream out = new FileOutputStream("test.xlsx")) {
wb.write(out);
}
}
@AllArgsConstructor
class RowData {
String loginId;
String customerId;
String time;
}
推荐阅读
- javascript - 如何在 Vue.js 中停止自动滚动到顶部
- python - IOError:[Errno 13] 权限被拒绝:'Test.xlsx'
- c++ - 两个具有相同、独立、隐藏功能的类
- linux - 我如何在 Linux 上使用已安装在 Windows 7 上的预安装 Intellij Idea?
- python - 在 PyCharm 中使用 Docker Image 作为 Python 解释器
- typescript - 元素隐式具有“任何”类型,因为类型“{}”没有索引签名。[7017]
- go - 银杏到 cobertura 和 JUnit
- ios - 未使用的捆绑资源,在磁盘上找不到,删除后?
- postgresql - Hibernate、postgres CTE 和原生 SQL 查询映射 ARRAY[]::BYTEA[] 与 addScalar
- apache-spark - k8s 上的 Apache Spark:保护驱动程序和执行程序之间的 RPC 通信不起作用