我使用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作为字符串返回,那就足够了 - 我可以计算逗号的数量并以这种方式找出单元格的数量)
答案 0 :(得分: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
担任开发人员传播者