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:
Y la línea de código que lanzó la excepción 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)
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?