gpt4 book ai didi

apache-poi - apache poi cellIterator 跳过空白单元格但不在第一行

转载 作者:行者123 更新时间:2023-12-04 01:51:54 31 4
gpt4 key购买 nike

我正在创建一个 Java 程序来读取 Excel 工作表并创建一个逗号分隔的文件。当我运行带有空白列的示例 excel 文件时,第一行工作正常,但其余行跳过空白单元格。
我已经阅读了将空白单元格插入行所需的代码更改,但我的问题是为什么第一行有效????

public ArrayList OpenAndReadExcel(){
FileInputStream file = null;
HSSFWorkbook workBook = null;
ArrayList <String> rows = new ArrayList();

//open the file

try {
file = new FileInputStream(new File("Fruity.xls"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("Could not open Input File");
e.printStackTrace();
}

// open the input stream as a workbook

try {
workBook = new HSSFWorkbook(file);
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("Can't Open HSSF workbook");
e.printStackTrace();
}

// get the sheet
HSSFSheet sheet = workBook.getSheetAt(0);

// add an iterator for every row and column
Iterator<Row> rowIter = sheet.rowIterator();

while (rowIter.hasNext())
{

String rowHolder = "";
HSSFRow row = (HSSFRow) rowIter.next();
Iterator<Cell> cellIter = row.cellIterator();
Boolean first =true;
while ( cellIter.hasNext())
{
if (!first)
rowHolder = rowHolder + ",";

HSSFCell cell = (HSSFCell) cellIter.next();

rowHolder = rowHolder + cell.toString() ;
first = false;
}

rows.add(rowHolder);

}

return rows;

}
public void WriteOutput(ArrayList<String> rows) {

// TODO Auto-generated method stub
PrintStream outFile ;
try {


outFile = new PrintStream("fruity.txt");
for(String row : rows)
{
outFile.println(row);
}
outFile.close();

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
-----
我在 .xls 文件中的输入(抱歉不知道如何在此处插入 excel 表)

名称 >>>>>>>>>> 原产国 >>>>>>>>> 原产国 >>>>>>> 等级>>>>>> 月数
苹果 >>>>>>>> 美国 >>>>>>>>>>>>>>>>>>>>>> 华盛顿 >>>>>>>>>>>>>> A >> >>>>>>> 6
橙色 >>>>>> 美国 >>>>>>>>>>>>>>>>>>>> 佛罗里达 >>>>>>>>>>>>>>>>> A > >>>>>>>> 9
菠萝>>>>> 美国>>>>>>>>>>>>>>>>>>>>>> 夏威夷>>>>>>>>>>>>>>>>>> B > >>>>>>>> 10
草莓>>>> 美国>>>>>>>>>>>>>>>>>>>>>> 新泽西>>>>>>>>>>>>>> C >>>>> >>>>> 3

我的输出文本文件

名称,原产国,原产国,,,等级,月数
苹果,美国,华盛顿,A,6.0
橙色,美国,佛罗里达,A,9.0
菠萝,美国,夏威夷,B,10.0
草莓,美国,新泽西,C,3.0
Notice the two extra commas before the Grade column... This is because I have two blank columns there.<br/>

在输出的其余部分中缺少这些额外的逗号。

我正在使用 Apache Poi-3.9-20121203.jar

最佳答案

您应该仔细阅读 Iterating Over Rows and Cells documentation在 Apache POI 网站上。

CellIterator 将只返回已在文件中定义的单元格,这主要意味着具有值或格式的单元格。 excel 文件格式是稀疏的,并且不会打扰存储既没有值也没有格式的单元格。

对于您的情况,您必须将格式应用于第一行,这会导致它们显示出来。

您需要通读 documentation并切换到按索引查找。这也将允许您完全控制如何在代码中处理空白单元格和从未使用过的单元格。

关于apache-poi - apache poi cellIterator 跳过空白单元格但不在第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14734519/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com