2013-12-13 42 views
1

我想使用for循环在excel表格的列中写入值列表。POI - Java - 使用for循环更新单元格

想法是,每3张从1开始,我的代码写入两个可能值。

例如:

for (q = 0 ; q < my_xls_workbook.getNumberOfSheets(); q=+2) 
{ 
    HSSFSheet my_worksheet = my_xls_workbook.getSheetAt(1); 
    HSSFCell cell = null; 
    cell = my_worksheet.getRow(m).getCell(4); 
    cell.setCellValue(myStoredValue[m][2]); 
    input_document.close(); 
    FileOutputStream output_file = new FileOutputStream(new File("C:\\Framework.xls")); 
    my_xls_workbook.write(output_file); 
    output_file.close(); 
}  

在哪里行m是已经存储的值,小区4是我想输入的值和my_xls_workbook.getSheetAt(1);是片材在那里将开始写的值列的第一单元。根据for循环,它会每次增加2。

但是当我的代码运行时,我得到一个NullPointerException POI可以这样工作,还是我做错了什么?

我在学java,所以我不是专家。也请原谅我的英语。

+0

你在哪一行得到'NullPointerException'?你正在用'q'循环,但是你没有在任何地方使用'q'。 – rgettman

+1

'q = + 2'可能是一个错字。我认为你的意思是'q + = 2'。 – ApproachingDarknessFish

回答

1

在您的闭环控制:

for (q = 0 ; q < my_xls_workbook.getNumberOfSheets(); q=+2) 

您与q循环(?希望这是一个int),但你的增量q=+2,这被解释为q=+2 - 它总是将q为正值2.如果您真的只想检查每张第二张纸,应该是q += 2q = q + 2

然后,您应该改变您获取床单的方式:my_xls_workbook.getSheetAt(1)应使用循环变量q,如下所示:my_xls_workbook.getSheetAt(q)。否则,您只需在索引1处单次获取纸张,这可能不存在,因此可能会返回为null。根据HFFSWorkbook文档,HFFSWorkbook#getSheetAt(int)是基于0的,所以你的循环是正确的,但是你的程序抓取索引1,第二张。

0

很可能m th 不存在或者索引4Cell不存在。如果尚未创建getRowgetCell方法,则返回null。检查它们是否为null,如果需要,请使用createRow(m)和/或createCell(4)创建它们。