在使用Apache POI HSSF将ArrayList存储在Excel中。

huangapple go评论106阅读模式
英文:

Storing ArrayList in Excel using Apache POI HSSF

问题

我有一个数据列表:

  1. List data1 = (List) session.getAttribute("data");

现在,我希望将这些数据存储在一个Excel文件中:

  1. HSSFWorkbook wb = new HSSFWorkbook();
  2. HSSFSheet sheet = wb.createSheet("Excel Sheet");
  3. HSSFRow rowhead = sheet.createRow((short) 0);
  4. rowhead.createCell((short) 0).setCellValue("lOGINID");
  5. rowhead.createCell((short) 1).setCellValue("CUSTOMERID");
  6. rowhead.createCell((short) 2).setCellValue("updatetime");
  7. int index = 1;
  8. for (itr = data1.iterator(); itr.hasNext(); ) {
  9. // 在这里写什么?
  10. }
英文:

I have a data list:

  1. List data1 = (List) session.getAttribute("data");

Now, I want this data to be stored in an Excel file:

  1. HSSFWorkbook wb = new HSSFWorkbook();
  2. HSSFSheet sheet = wb.createSheet("Excel Sheet");
  3. HSSFRow rowhead = sheet.createRow((short) 0);
  4. rowhead.createCell((short) 0).setCellValue("lOGINID");
  5. rowhead.createCell((short) 1).setCellValue("CUSTOMERID");
  6. rowhead.createCell((short) 2).setCellValue("updatetime");
  7. int index = 1;
  8. for (itr = data1.iterator(); itr.hasNext(); ) {
  9. // what to write here?
  10. }

答案1

得分: 1

你没有明确说明你的列表中包含什么。 List data1 = (List) session.getAttribute("data"); 必须是 List<SomeClass>

你可以简单地遍历列表,获取当前索引上的对象,创建新行并填充单元格中的值。

  1. for (int i = 0; i < data1.size(); i++) { // 遍历列表
  2. SomeClass data = data1.get(i);// 获取当前索引 i 上的对象
  3. HSSFRow row = sheet.createRow(i + 1); // 创建新行
  4. // 填充值
  5. row.createCell(0).setCellValue(data.field1);
  6. row.createCell(1).setCellValue(data.field2);
  7. row.createCell(2).setCellValue(data.field3);
  8. }

一个完整的示例,假设列表包含 RowData

  1. import lombok.AllArgsConstructor;
  2. import org.apache.poi.hssf.usermodel.HSSFRow;
  3. import org.apache.poi.hssf.usermodel.HSSFSheet;
  4. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  5. import java.io.File;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;
  8. import java.util.List;
  9. void writeList() throws IOException {
  10. // 读取数据,RowData 在您的情况下可能不同
  11. List<RowData> data1 = (List<RowData>) session.getAttribute("data");
  12. HSSFWorkbook wb = new HSSFWorkbook();
  13. HSSFSheet sheet = wb.createSheet("Excel Sheet");
  14. HSSFRow rowhead = sheet.createRow(0); // 头部
  15. rowhead.createCell(0).setCellValue("lOGINID");
  16. rowhead.createCell(1).setCellValue("CUSTOMERID");
  17. rowhead.createCell(2).setCellValue("updatetime");
  18. for (int i = 0; i < data1.size(); i++) {
  19. RowData data = data1.get(i);// 行数据
  20. HSSFRow row = sheet.createRow(i + 1);
  21. row.createCell(0).setCellValue(data.loginId);
  22. row.createCell(1).setCellValue(data.customerId);
  23. row.createCell(2).setCellValue(data.time);
  24. }
  25. // 写入文件
  26. try (FileOutputStream out = new FileOutputStream("test.xlsx")) {
  27. wb.write(out);
  28. }
  29. }
  30. @AllArgsConstructor
  31. class RowData {
  32. String loginId;
  33. String customerId;
  34. String time;
  35. }
英文:

You haven't clearly stated what your List holds. List data1 = (List) session.getAttribute("data"); It must be List<SomeClass>.

You can simply iterate over the list, pull the object on current index, create new row and fill the values in cells

  1. for (int i = 0; i < data1.size(); i++) { //iterate over the list
  2. SomeClass data = data1.get(i);//pull the object on current index i
  3. HSSFRow row = sheet.createRow(i + 1); //create new row
  4. //fill the values
  5. row.createCell(0).setCellValue(data.field1);
  6. row.createCell(1).setCellValue(data.field2);
  7. row.createCell(2).setCellValue(data.field3);

A complete example assuming the list contains RowData,:

  1. import lombok.AllArgsConstructor;
  2. import org.apache.poi.hssf.usermodel.HSSFRow;
  3. import org.apache.poi.hssf.usermodel.HSSFSheet;
  4. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  5. import java.io.File;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;
  8. import java.util.List;
  9. void writeList() throws IOException {
  10. //read data , RowData can be different in your case
  11. List<RowData> data1 = (List<RowData>) session.getAttribute("data");
  12. HSSFWorkbook wb = new HSSFWorkbook();
  13. HSSFSheet sheet = wb.createSheet("Excel Sheet");
  14. HSSFRow rowhead = sheet.createRow(0); //header
  15. rowhead.createCell(0).setCellValue("lOGINID");
  16. rowhead.createCell(1).setCellValue("CUSTOMERID");
  17. rowhead.createCell(2).setCellValue("updatetime");
  18. for (int i = 0; i < data1.size(); i++) {
  19. RowData data = data1.get(i);//rows
  20. HSSFRow row = sheet.createRow(i + 1);
  21. row.createCell(0).setCellValue(data.loginId);
  22. row.createCell(1).setCellValue(data.customerId);
  23. row.createCell(2).setCellValue(data.time);
  24. }
  25. //write to file
  26. try (FileOutputStream out = new FileOutputStream("test.xlsx")) {
  27. wb.write(out);
  28. }
  29. }
  30. @AllArgsConstructor
  31. class RowData {
  32. String loginId;
  33. String customerId;
  34. String time;
  35. }

huangapple
  • 本文由 发表于 2020年9月30日 20:06:37
  • 转载请务必保留本文链接:https://go.coder-hub.com/64137234.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定