0

我正在尝试从 csv 读取内容并将其打印到 excel 文件中。到目前为止,我有这个,但是它只将 csv 的最后一个值打印到 excel 文件的第一个单元格中。我尝试对列和行使用增量,但出现空指针异常错误。

int i=0;
int j=0;
int k=0;
int row=68;
int column=0;
String [] part={"052","064"};
try{
    //InputStream inp = new FileInputStream();
    //Workbook wb = WorkbookFactory.create(inp);
    Workbook wb = WorkbookFactory.create(new File("30_results_w_graphs.xls"));


    for (k=0; k<part.length; k++)
    {
        Sheet sheet = wb.getSheet(part[k]);
            Cell cell = null;
        Scanner scanner = new Scanner(new File(part[k]+".csv"));
        scanner.useDelimiter(",");


        while(scanner.hasNext()){
            cell=sheet.getRow(row).getCell(column);
            cell.setCellValue(scanner.next());
            //row++;
            //column++;
            }
        FileOutputStream fileOut = new FileOutputStream("30_results_U_w_graphs.xls");
        wb.write(fileOut);
        scanner.close();
    }

}

我相信这是一个嵌套的for循环来增加行和列,但即使在常规增量中,我也会得到一个空指针异常。

4

2 回答 2

2

我不知道您到底想做什么,但此代码显示了使用 Apache POI 将 CSV 文件读入现有 Excel 文件的一些基本步骤。现有的工作表/行/单元格不会被删除。

CSV 文件如下所示:

12,14,18,21
82,19,18,44
9,4,31,12

将文件读入以文件名命名的工作表:

    File excel = new File("/tmp/result.xls");

    //Open existing Excel file:
    Workbook wb = WorkbookFactory.create(excel);

    //Create a new Excel file:
    //Workbook wb = new HSSFWorkbook();

    //Read in CSV
    String name = "test";
    Sheet sheet = wb.getSheet(name);
    if (sheet == null) {
        sheet = wb.createSheet(name);
    }

    int rowCount = 0;
    Scanner scanner = new Scanner(new File("/tmp/" + name + ".csv"));
    while (scanner.hasNextLine()) {
        String[] rowData = scanner.nextLine().split(",");
        for (int col = 0; col < rowData.length; col++) {
            Row row = sheet.getRow(rowCount);
            if (row == null)
                row = sheet.createRow(rowCount);
            Cell cell = row.getCell(col);
            if (cell == null) {
                cell = row.createCell(col);
            }
            cell.setCellValue(rowData[col]);
        }
        rowCount++;
    }

    wb.write(new FileOutputStream(excel));
}
于 2013-11-01T15:26:57.183 回答
0

你不增加row也不column。使用createRow(int row)createCell(int column)创建新单元格。

于 2013-11-01T14:16:36.927 回答