首页 > 解决方案 > 使用java将数据从多个arrayLists导出到单个excel表

问题描述

我有两个数组列表,每个数组都包含某些整数值,我的挑战是使用 java 打印 excel 表中每一列中的每个数组列表数据。为此,我使用了 apache POI。当我执行下面的代码时,只有一列正在写入,另一列为空。

package basic;
import java.io.IOException;
import java.util.*;
public class excel {

    public static void main(String[] args) throws IOException, InterruptedException {
        SimpleExcelWriterExample.createRecord();
        List<Integer> values1=Arrays.asList(1,2,3,4,5,6);
        List<Integer> values2=Arrays.asList(1,2,3,4,5,6);
        SimpleExcelWriterExample.AddRecord(values1,0);
        SimpleExcelWriterExample.AddRecord(values2,1);
        SimpleExcelWriterExample.Add();

    }

}

SimpleExcelWriterExample 类如下

package basic;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import org.apache.poi.xssf.usermodel.*;
class SimpleExcelWriterExample {

    public static XSSFWorkbook workbook;
    public static XSSFSheet worksheet;
    public static FileOutputStream fileOut;
    public static XSSFRow row;
    public static XSSFCell cell;

    public static void createRecord()throws IOException {

        fileOut = new FileOutputStream("C:\\Users\\DELL\\workspace\\wipro1\\src\\basic\\New.xlsx");
        workbook = new XSSFWorkbook();
        worksheet = workbook.createSheet("POI Worksheet");
        System.out.println("Sheet creadted successfully");

    }

    public static void AddRecord(List<Integer> values, int col) throws IOException {
        for (int i = 0; i < values.size(); i++) {
            row = worksheet.createRow(i);
            cell = row.createCell(col);
            cell.setCellValue(values.get(i));
            //System.out.println(cellAj.getStringCellValue());  
        }
        }

    public static void Add() throws IOException {
        workbook.write(fileOut);

    }

}

- 我得到的输出如下 在此处输入图像描述

请帮我解决这个问题,在此先感谢。

标签: javaapache-poi

解决方案


Sheet.createRow总是在工作表中创建一个新的空行。所以在你的AddRecord方法中

row = worksheet.getRow(i); if (row == null) row = worksheet.createRow(i);

首先尝试获取该行,并且仅当该行不存在时,它才会创建该行。

所以完整 AddRecord的方法可能看起来像:

public static void AddRecord(List<Integer> values, int col) throws IOException {
 for (int i = 0; i < values.size(); i++) {
  row = worksheet.getRow(i); if (row == null) row = worksheet.createRow(i);
  cell = row.createCell(col); 
  cell.setCellValue(values.get(i));
  //System.out.println(cellAj.getStringCellValue());  
 }
}

推荐阅读