阻止 ArrayList 在 Excel、Apache POI 中收集多个数据而不是一个数据

Posted

技术标签:

【中文标题】阻止 ArrayList 在 Excel、Apache POI 中收集多个数据而不是一个数据【英文标题】:Stop an ArrayList from gathering multiple data instead of one in Excel, Apache POI 【发布时间】:2015-03-25 13:37:16 【问题描述】:

我正在导入一个 Excel 文件并尝试在单个列中收集单元格中的数据,如下所示:

当我尝试这样做时,不知何故,使用下面的代码,我得到以下结果:

有没有一种方法可以让我得到 [Teacher's name, HELLO, as, asd]?

HSSFWorkbook workbook = new HSSFWorkbook(file);
HSSFSheet sheet = workbook.getSheetAt(0);
int temp = sheet.getPhysicalNumberOfRows();
int numberoftickets = temp - 1;

List < String > a = new ArrayList < String > ();
for (Row row: sheet) 
    Cell c = row.getCell(0);
    if (c.getCellType() == Cell.CELL_TYPE_STRING) 
        a.add(c.getStringCellValue());
    

String[] simpleArray = a.toArray(new String[a.size()]);
String aa = Arrays.toString(simpleArray);
StringTokenizer t = new StringTokenizer(aa, ",");

System.out.println(a);

【问题讨论】:

【参考方案1】:

您正在打印出 inside for 循环的结果,因此它每行打印一次。

相反,在 for 循环之外打印数组列表(在结束 for 循环的 之后。

for (Row row: sheet) 
    Cell c = row.getCell(0);
    if (c.getCellType() == Cell.CELL_TYPE_STRING) 
        a.add(c.getStringCellValue());
    
 // this brace closes the for loop

//put your print code and tokenize code here

【讨论】:

迭代后我已经在打印了。我不知道为什么它打印了不止一次。【参考方案2】:

Iteration之后尝试打印结果

for(Row row: sheet)
  // Do Whatever you want to do  

System.out.println(a);

【讨论】:

迭代后我已经在打印了。我不知道为什么它打印了不止一次。

以上是关于阻止 ArrayList 在 Excel、Apache POI 中收集多个数据而不是一个数据的主要内容,如果未能解决你的问题,请参考以下文章

Excel 保存文件出现 您试图打开的文件类型(Excel 2007和更高版本的启用宏的工作簿和模板)被信任中心的文件阻止设置阻止

使用POI Apache从Excel读取数据时向ArrayList添加数据

如何阻止某人取消隐藏我的 Excel 工作表?

如何阻止 excel 合并我的 s-s-rS 报告列?

C#ArrayList重复数据删除

Java使用POI读取和写入Excel指南