for (int i = 0; i < mainArrayList.size(); i++) {
ArrayList<String> row = mainArrayList.get(i);
for (int t = 0; t < row.size(); t++) {
if(condition){
//statement
continue;
else{
int roww = i;
int cell = t;
editFile(roww, cell);
System.out.println("no of row:" + roww + " no of
cell " + cell);
System.out.println("FALSE");
continue;
}
}
}
我有if-else语句,如上面的代码。所有arraylist数据均来自已导入的excel文件,并将其存储在arraylist中。因此,基本上每个数据都会经过该条件。如果条件结果为假,它将调用editFile方法(下面的代码)来编辑原始文件,以编辑要发送的变量roww和cell11的值的特定行和单元格。如果只有1个结果为假,我已经对其进行了测试,它可以在该特定的列和行上很好地进行编辑,但是当我有一个以上的假结果时,它只会转到发送的最后一个值。
public static void editFile(int roww, int cell) {
try {
FileInputStream file = new FileInputStream(new File("xxx"));
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet sheet = workbook.getSheetAt(0);
for (int ff = 0; ff < roww + 1; ff++) {
XSSFRow row = sheet.getRow(roww);
row.createCell(cell).setCellValue("FALSE");
}
file.close();
FileOutputStream outFile = new FileOutputStream(
new File("xxx2"));
workbook.write(outFile);
outFile.close();
System.out.printf("DONE UPDATE");
} catch (Exception e) {
e.printStackTrace();
}
}
例如我有价值
roww = 12, cell = 10
和roww = 18, cell = 20
editFile方法将仅编辑roww = 18, cell = 20
有人可以帮助我吗?预先谢谢你
答案 0 :(得分:-1)
感谢Michael Butscher帮助我。这是非常简单的错误。我应该使用相同的文件。我应该对输入使用相同的excel文件,对outfile使用相同的excel文件。
public static void editFile(int roww, int cell) {
try {
FileInputStream file = new FileInputStream(new File("samefile"));
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet sheet = workbook.getSheetAt(0);
XSSFRow row = sheet.getRow(roww);
row.createCell(cell).setCellValue("FALSE");
file.close();
FileOutputStream outFile = new FileOutputStream(
new File("samefile"));
workbook.write(outFile);
outFile.close();
System.out.printf("DONE UPDATE");
} catch (Exception e) {
e.printStackTrace();
}
}