Код
public @ResponseBody byte[] generate(HttpServletResponse response) {
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
Workbook workbook = new XSSFWorkbook();
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
File excelFile = new File();
List<Column> columns = new ArrayList<>();
Column column = new Column();
column.setHeader("Header 1");
List<String> values = new ArrayList<>();
values.add("1.1");
values.add("1.2");
values.add("1.3");
values.add("1.4");
column.setValues(values);
columns.add(column);
column = new Column();
column.setHeader("Header 2");
values = new ArrayList<>();
values.add("2.1");
values.add("2.2");
values.add("2.3");
values.add("2.4");
values.add("2.5");
column.setValues(values);
columns.add(column);
column = new Column();
column.setHeader("Header 3");
values = new ArrayList<>();
values.add("3.1");
values.add("3.2");
values.add("3.3");
values.add("3.4");
values.add("3.5");
values.add("3.6");
column.setValues(values);
columns.add(column);
excelFile.setColumns(columns);
excelFile.setName("customers");
response.setHeader("Content-Disposition",
"attachment; filename=\"" + excelFile.getName() + ".xlsx\"");
workbook.getCreationHelper();
// Row for Header
Sheet mySheet = workbook.createSheet(excelFile.getName());
Row headerRow = mySheet.createRow(0);
int cellCounter = 0;
for (Column header : excelFile.getColumns()) {
Cell cell = headerRow.createCell(cellCounter++);
cell.setCellValue(header.getHeader());
}
int cellnum = 0;
for (Column colum : excelFile.getColumns()) {
int rownum = 1;
for (String value : colum.getValues()) {
Row row = mySheet.createRow(rownum++);
Cell cell = row.createCell(cellnum);
cell.setCellValue(value);
System.out.println("y: " + rownum + ", x: " + cellnum + ", value: " + value
+ ", Column Index: " + cell.getColumnIndex() + ", Row Index: " + cell.getRowIndex()
+ ", cell value: " + cell.getStringCellValue());
}
cellnum++;
}
workbook.write(out);
InputStream byt = new ByteArrayInputStream(out.toByteArray());
return IOUtils.toByteArray(byt);
} catch (IOException e) {
log.error("(generate) IOException: " + e.getLocalizedMessage(), e);
e.printStackTrace();
} finally {
try {
workbook.close();
out.close();
} catch (IOException e) {
log.error("(generate) IOException: " + e.getLocalizedMessage(), e);
e.printStackTrace();
}
}
return null;
}
консольный вывод
y: 2, x: 0, значение: 1.1, индекс столбца: 0, индекс строки: 1, значение ячейки: 1.1y: 3, x: 0, значение: 1.2, индекс столбца: 0, индекс строки: 2, значение ячейки: 1.2y: 4, x: 0, значение: 1,3, индекс столбца: 0, индекс строки: 3, значение ячейки: 1,3y: 5, x: 0, значение: 1.4, индекс столбца: 0, индекс строки: 4, значение ячейки: 1.4y: 2, x: 1, значение: 2.1, индекс столбца: 1, индекс строки: 1, значение ячейки: 2.1у: 3, х: 1, значение: 2,2, индекс столбца: 1, индекс строки: 2, значение ячейки: 2,2y: 4, x: 1, значение: 2.3, индекс столбца: 1, индекс строки: 3, значение ячейки: 2.3y: 5, x: 1, значение: 2,4, индекс столбца: 1, индекс строки: 4, значение ячейки: 2,4y: 6, x: 1, значение: 2,5, индекс столбца: 1, индекс строки: 5, значение ячейки: 2,5y: 2, x: 2, значение: 3.1, индекс столбца: 2, индекс строки: 1, значение ячейки: 3.1y: 3, x: 2, значение: 3.2, индекс столбца: 2, индекс строки: 2, значение ячейки: 3.2y: 4, x: 2, значение: 3,3, индекс столбца: 2, индекс строки: 3, значение ячейки: 3,3y: 5, x: 2, значение: 3.4, индекс столбца: 2, индекс строки: 4, значение ячейки: 3.4y: 6, x: 2, значение: 3,5, индекс столбца: 2, индекс строки: 5, значение ячейки: 3,5
y: 7, x: 2, значение: 3,6, индекс столбца: 2, индекс строки: 6, значение ячейки: 3,6
, но вывод файла
Заголовок1 заголовок 2 заголовок 3
3.1
3.2
3.3
3.4
3.5
3.6
output_file
Я не могу понять, почему первые два столбца пусты
Я ценю любую помощьполный код
https://github.com/micha3lvega/FileManager ......