0

我正在使用 Aspose 读取 CSV 文件。

我事先不知道文件每一行的单元格数,但我需要知道它以进行进一步处理。

不幸的是,我没有办法找出 CSV 行中的单元格数量。

想象一下 CSV 文件中的以下行。它包含 7 个单元格,其中 4 个是空的:

1,2,,4,,,

使用

row.iterator();

Aspose 只会返回 3 个单元格,因为它会忽略所有空单元格。

作为替代方案,我现在执行以下操作:

    Cell lastCell = row.getLastCell();

    int count = 0;
    do {
        cell = row.getCellOrNull(count);
        String cellValue = cell == null ? "" : cell.getStringValueWithoutFormat();

        //do something with the cell value...

        count++;
    } while (cell == null || ! lastCell.equals(cell));

这效果更好,因为它返回前 4 个单元格。但是,它仍然忽略最后 3 个单元格。

有什么方法可以获取有关丢失单元格的信息吗?(如果 Aspose 可以将原始 Row 作为字符串返回就足够了 - 然后我可以计算逗号的数量并以这种方式找出单元格的数量)

4

1 回答 1

0

您可以使用Worksheet.getCells().getMaxDisplayRange()方法来获取最大显示范围。

请考虑这个 CSV。如果你在 MS-Excel 中打开它并检查最后一个单元格,你会发现它是 Q2

Book1.csv

2,,,,1,,,,,,,,,,,,,
,,3,,,,

Aspose.Cells 通过以下代码返回相同的结果。

TxtLoadOptions opts = new TxtLoadOptions(LoadFormat.CSV);

Workbook wb = new Workbook("Book1.csv", opts);
Worksheet ws = wb.getWorksheets().get(0);
Range rng = ws.getCells().getMaxDisplayRange();

System.out.println(rng);

这是代码的控制台输出。

控制台输出

Aspose.Cells.Range [ Sheet1!A1:Q2 ]

注意:我在 Aspose 担任开发人员布道师

于 2016-04-27T16:06:38.233 回答