我正在创建一个java程序来读取excel表单并创建逗号分隔文件。当我运行我的示例excel文件,空白列,第一行完美工作,但其余的行跳过空白单元格。 我已阅读有关将空白单元插入行所需的代码更改,但我的问题是为什么第一行工作?apache poi cellIterator跳过空白单元格但不在第一行
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
草莓>>>>美国>>>>>>>>>>>>>>>>>>>>>>新泽西州>>>>>>> >>>>>>>ç>>>>>>>>>> 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
想通了这一个。这是格式化...第一行是标题是大胆的...大胆适用于空列...因此,这些列被假定为空白值,而不是空...谢谢 – user2047551
考虑编辑问题文本。 – soufrk