Возможно, вы используете файл .xls и собираетесь создать этот тип файла.Но он не поддерживает много столбцов
, он поддерживает максимум 65536 строк и 256 столбцов
Но если вы используете обновленный формат XLSX поддерживает 1048576 строки 16384 столбца
MS Excel с поддержкой соответствующих строк и столбцов
+-----------------+-----------+--------------+---------------------+
| | Max. Rows | Max. Columns | Max. Cols by letter |
+-----------------+-----------+--------------+---------------------+
| Excel 365* | 1,048,576 | 16,384 | XFD |
| Excel 2013 | 1,048,576 | 16,384 | XFD |
| Excel 2010 | 1,048,576 | 16,384 | XFD |
| Excel 2007 | 1,048,576 | 16,384 | XFD |
| Excel 2003 | 65,536 | 256 | IV |
| Excel 2002 (XP) | 65,536 | 256 | IV |
| Excel 2000 | 65,536 | 256 | IV |
| Excel 97 | 65,536 | 256 | IV |
| Excel 95 | 16,384 | 256 | IV |
| Excel 5 | 16,384 | 256 | IV |
+-----------------+-----------+--------------+---------------------+
Но здесь вы используете XSSF , что означает, что ваш файл находится в .xlsx формат, поэтому он будет поддерживать этот предел.Но если ваш файл в формате .xls , то этот предел не поддерживается.
Если вы используете файл .xlsx , вы можете попробовать этот код.Может быть, это поможет вам.
private static void writeData() throws IOException {
Workbook workbook = new XSSFWorkbook();
XSSFSheet sheet = (XSSFSheet) workbook.createSheet();
int r = 0;
for (int i=0;i<2;i++) {
Row row = sheet.createRow(r++);
int column = 0;
for (int j =0;j<2;j++) {
XSSFCell cell = (XSSFCell) row.createCell(column++);
if (r == 1 || column == 1) cell.setCellValue(i);
else if (column == 2) {
cell.setCellFormula("OFFSET(IU220,0,1)");
}
}
}
FileOutputStream fileOut = new FileOutputStream("stackProblem.xlsx");
workbook.write(fileOut);
workbook.close();
}
Файл выглядит так:
evaluator.evaluateInCell(cell);
больше не поддерживаетсязатем 255 столбцов.Вы можете использовать evaluator.evaluate(cell);
Попробуйте это
public static void main(String[] args) throws IOException {
writeData();
}
private static void writeData() throws IOException {
Workbook workbook = new XSSFWorkbook();
XSSFSheet sheet = (XSSFSheet) workbook.createSheet();
XSSFRow row218 = sheet.createRow(218);
XSSFCell vv2180 = (XSSFCell) row218.createCell(255);
vv2180.setCellValue(50);
XSSFCell vv2181 = (XSSFCell) row218.createCell(256);
vv2181.setCellValue(69);
XSSFRow row219 = sheet.createRow(219);
XSSFCell vv0 = (XSSFCell) row219.createCell(255);
vv0.setCellValue(40);
XSSFCell vv = (XSSFCell) row219.createCell(256);
vv.setCellValue(70);
XSSFRow row220 = sheet.createRow(220);
XSSFCell vv2200 = (XSSFCell) row220.createCell(255);
vv2200.setCellValue(30);
XSSFCell vv220 = (XSSFCell) row220.createCell(256);
vv220.setCellValue(20);
XSSFCell cell = sheet.createRow(1).createCell(1);
cell.setCellFormula("OFFSET(IV220,0,1)");
XSSFFormulaEvaluator evaluator =
(XSSFFormulaEvaluator) workbook.getCreationHelper().createFormulaEvaluator();
evaluator.evaluate(cell);
FileOutputStream fileOut = new FileOutputStream("stackProblem.xlsx");
workbook.write(fileOut);
workbook.close();
}
Хорошая ссылка на библиотеку poi: apche poi HSSF против XSSF