Estoy tratando de aplicar un estilo de celda a los woekbooks defferent. Funciona bien, cuando lo aplico al primer libro de trabajo, pero cuando intento hacer esto con el segundo y el siguiente libro de trabajo, no se aplica ningún estilo y se lanza la siguiente excepción.apache poi aplica un estilo a diferentes libros de trabajo
Exception in thread "Thread-3" java.lang.IllegalArgumentException: This Style does not belong to the supplied Workbook Stlyes Source. Are you trying to assign a style from one workbook to the cell of a differnt workbook?
at org.apache.poi.xssf.usermodel.XSSFCellStyle.verifyBelongsToStylesSource(XSSFCellStyle.java:118)
at org.apache.poi.xssf.usermodel.XSSFCell.setCellStyle(XSSFCell.java:500)
at CoreLayer.ExportManager.ExcelExproter.applyStyle(ExcelExproter.java:224)
at CoreLayer.ExportManager.ExcelExproter.groupSchedule(ExcelExproter.java:47)
at UILayer.ExportDialog$ExportWorker.run(ExportDialog.java:111)
at java.lang.Thread.run(Thread.java:722)
El siguiente código se utiliza:
public void professorSchedule(Professor professor) {
Workbook wb = new XSSFWorkbook();
Sheet sheet = wb.createSheet(TextConstants.SCHEDULE);
String safeName = WorkbookUtil.createSafeSheetName(professor.toString() + ".xlsx");
LinkedHashMap<ScheduleSlot, Lesson> professorSchedule = data.getSchedule().getProfessorSchedule(professor);
fillProfessorSchedule(sheet, professorSchedule);
applyStyle(wb, sheet);
try {
FileOutputStream fileOutputStream = new FileOutputStream(settings.getSchedulesPath() + safeName);
wb.write(fileOutputStream);
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private void applyStyle(Workbook wb, Sheet sheet) {
CellStyle style = wb.createCellStyle();
style.setWrapText(true);
int columnNumber = 0;
sheet.autoSizeColumn(columnNumber);
for (Row row : rows) {
for (Cell cell : row) {
cell.setCellStyle(style);
sheet.setColumnWidth(columnNumber++, 5000);
}
}
}
Gracias a todos por adelantado!
pero como puede ver, creo un nuevo estilo para cada libro. En realidad, no sé si hay estilos creados y no creo que el enfoque que proporcionaste sea adecuado para mi caso. Entonces, ¿es posible crear un nuevo estilo para cada libro? ¿Y el error que tiene mi código? Muchas gracias por su ayuda. –
Debe asegurarse de usar solo un estilo con el libro de trabajo para el que lo creó. Puede crear estilos una vez por libro de trabajo (y seguimiento!), O crear/cargarlo para un libro de trabajo y clonarlo más tarde – Gagravarr