Sentí la necesidad de publicar ésta excepción porque no encontré ayuda de utilidad en internet, apenas en inglés, tampoco en español; inclusive, al buscar el error, los primeros links de los resultados sólo llevan a foros, donde otro usuario pide ayuda respecto al mismo problema, sin una respuesta puntual o certero.
Al trabajar reportes en
Java con plantillas de archivos
Excel (
MS Office,
Open Office,
Libre Office, etc) ubicadas en memoria no volátil (entiéndase, un disco de almacenamiento); se corre el riesgo de que el archivo esté corrupto; o se corrompa en el proceso de creación.
El error -aparentemente sin sentido- que apareció fue:
ex.getMessage(): Unable to construct record instance.
(Mensaje: No se puede construir instancia de registro)
ex.getCause(): org.apache.poi.hssf.record.RecordFormatException: HSSF does not currently support encrypted workbooks.
(HSSF no es compatible con "libros" cifrados)
ex.getClass(): class org.apache.poi.hssf.record.RecordFormatException.
(Clase: RecordFormatException)
Y la línea de código que lanzó la excepción fue:
Workbook wb = new HSSFWorkbook(inp);
Como son reportes sobre plantillas de
excel, ya se tiene un patrón de programación, librerías para interactuar con excel ya agregadas, y varía básicamente la agrupación, manipulación, lectura y muestra de los datos.
Y si bajo ese patrón que siempre ha funcionado, algo empieza a fallar, no es problema del código ni del
JDK ni del
IDE de
Java ni del programador; es problema externo. Ahora... cómo identificarlo?