у меня есть лист с 6 столбцами и примерно 50 тыс. строк. Я хотел бы скопировать одну строку n раз. Пока делаю так:
for (int i=0; i<=excel_max_row; i++) {
row = sheet3.createRow((short) i);
cell = row.createCell(0);
cell.setCellFormula("IFERROR(LOOKUP(Template!A"+(i+2)+",'Dropdown-Values'!A:A,'Dropdown-Values'!B:B),\"\")");
cell = row.createCell(1);
cell.setCellFormula("IF(Template!B"+(i+2)+"=0,\"\",Template!B"+(i+2)+")");
cell = row.createCell(2);
cell.setCellFormula("IFERROR(LOOKUP(Template!C"+(i+2)+",'Dropdown-Values'!C:C,'Dropdown-Values'!D:D),\"\")");
cell = row.createCell(3);
cell.setCellFormula("IFERROR(LOOKUP(Template!D"+(i+2)+",'Dropdown-Values'!E:E,'Dropdown-Values'!F:F),\"\")");
cell = row.createCell(4);
cell.setCellFormula("IFERROR(LOOKUP(Template!E"+(i+2)+",'Dropdown-Values'!E:E,'Dropdown-Values'!F:F),\"\")");
cell = row.createCell(5);
cell.setCellFormula("IF(Template!F"+(i+2)+"=0,\"\",Template!F"+(i+2)+")");
}
XSSFFormulaEvaluator.evaluateAllFormulaCells(wb);
Это работает, но очень медленно, потому что excel_max_row
может быть до 50k. Есть ли способ быстро скопировать строку n раз со всеми форумами?
Большое спасибо
very slow
? - person XtremeBaumer   schedule 20.09.2017evaluateAllFormulaCells
является основной причиной замедления. Прочитайте Пересчет формул, чтобы узнать об альтернативах. - person Axel Richter   schedule 20.09.2017row = sheet3.createRow((short) i);
сможет создать 50 000 строк, посколькуshort
имеет максимальное значение 32 767. Подсказка Sheet.createRow(intномер_строки). Не знаю, откуда ваш кастинг наshort
. - person Axel Richter   schedule 20.09.2017