Следующий код открывает книгу только один раз, вместо того, чтобы открывать и закрывать ее повторно для каждого введенного значения:
public void setData1(Workbook workbook, FileOutputStream fos, String filePath, String sheetName, int rowNum, int colNum, Object data) throws IOException {
Sheet sheet = workbook.getSheet(sheetName);
Row row = sheet.getRow(rowNum);
Cell cell = row.getCell(colNum);
if(data instanceof Integer) {
cell.setCellValue((int)data);
}
else if (data instanceof String) {
cell.setCellValue(String.valueOf((String) data));
}
else if(data instanceof Double) {
if((double)data == Math.floor((double)data)) {
cell.setCellValue((int)Math.floor((double)data));
}
else {
cell.setCellValue((double)data);
}
}
BaseFormulaEvaluator.evaluateAllFormulaCells(workbook); //I don't have enough context here, but if it does not cause any logical problems, move this line to *
workbook.write(fos);
}
public void callsSetData1() {
object Data = new Object()
File file = new File(filePath);
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
} catch (FileNotFoundException e) {
Messages.terminate(file.getName() + " file is missing.");
}
Workbook workbook = new XSSFWorkbook(fis);
FileOutputStream fos = new FileOutputStream(new File(filePath));
//*
for(i = 0; i < 10; i++) {
setData1(workbook, fos, "R:\andom\File\Path", "randomSheetName",0,0, data); //I'm assuming you are calling setData1() multiple times, as I do not have the code of the method that calls it, I've just used a for-loop for now
}
workbook.close();
fos.close();
fis.close();
}
Рекомендую также указать код метода, по которому вы звоните setData1
. Поскольку у меня этого нет, callsSetData1
может содержать несколько логических ошибок.
Дело в том, что вы должны открывать и закрывать книгу только один раз в методе, который вызывает setData1
, и передавать его в качестве параметра. Это должно помочь с задержкой.
Единственным незначительным недостатком является то, что у вас будет еще несколько строк кода, если вы вызовете setData1
несколькими различными методами.