{"id":381,"date":"2015-05-16T09:21:05","date_gmt":"2015-05-16T08:21:05","guid":{"rendered":"http:\/\/www.pixnbgames.com\/blog\/?p=381"},"modified":"2015-05-16T09:21:36","modified_gmt":"2015-05-16T08:21:36","slug":"crear-archivos-excel-desde-java-con-apache-poi","status":"publish","type":"post","link":"https:\/\/www.pixnbgames.com\/blog\/java\/crear-archivos-excel-desde-java-con-apache-poi\/","title":{"rendered":"Crear archivos Excel desde Java con Apache POI"},"content":{"rendered":"<p style=\"text-align: justify;\">A menudo se necesita manejar archivos de Microsoft Excel desde una aplicaci\u00f3n Java. Puede ser util, por ejemplo, para exportar informaci\u00f3n tabulada, importar datos, generar informes, etc.\u00a0<a title=\"Apache POI\" href=\"https:\/\/poi.apache.org\" target=\"_blank\">Apache POI<\/a> es una librer\u00eda de la fundaci\u00f3n Apache, que se ha convertido en un est\u00e1ndar de facto para este tipo de tareas. En este art\u00edculo veremos un ejemplo de c\u00f3mo generar un archivo excel sencillo.<\/p>\n<h2 style=\"text-align: justify;\">A\u00f1adir la dependencia al proyecto<\/h2>\n<p style=\"text-align: justify;\">Suponiendo que tenemos un proyecto Maven, a\u00f1adimos la dependencia para apache-poi. En el momento de escribir este art\u00edculo, la \u00faltima versi\u00f3n la <em>3.12-beta1<\/em>. Aunque se trate de una versi\u00f3n beta, como es un art\u00edculo de demostraci\u00f3n, ser\u00e1 la versi\u00f3n que usemos:<\/p>\n<pre style=\"padding-left: 30px;\" lang=\"xml\">&lt;dependencies&gt;\r\n    &lt;dependency&gt;\r\n        &lt;groupId&gt;org.apache.poi&lt;\/groupId&gt;\r\n        &lt;artifactId&gt;poi&lt;\/artifactId&gt;\r\n        &lt;version&gt;3.12-beta1&lt;\/version&gt;\r\n    &lt;\/dependency&gt;\r\n&lt;\/dependencies&gt;<\/pre>\n<p style=\"text-align: justify;\">Si no usamos Maven, hemos de descargar la librer\u00eda desde <a title=\"Apache POI Download\" href=\"https:\/\/poi.apache.org\/download.html\">aqu\u00ed<\/a> y agregarlas manualmente al proyecto.<\/p>\n<h2 style=\"text-align: justify;\">Formato del archivo Excel<\/h2>\n<p><a title=\"Apache POI Spread Sheet\" href=\"https:\/\/poi.apache.org\/spreadsheet\/index.html\">Tal y como podemos leer en su p\u00e1gina web<\/a>, apache POI provee dos APIs:<\/p>\n<ul>\n<li><strong>HSSF:<\/strong>\u00a0permite generar archivos compatibles con MS Office 97<\/li>\n<li><strong>XSSF:<\/strong>\u00a0permite generar archivos compatibles con MS Office\u00a02007<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">En este caso, para generar archivos con la m\u00e1xima compatibilidad posible, usaremos el API HSSF.<\/p>\n<h2>Generar libro\u00a0Excel<\/h2>\n<p>La forma de trabajar con Apache POI ser\u00e1 siempre la misma:<\/p>\n<ol>\n<li>Crear un libro de trabajo<\/li>\n<li>Crear hojas en el libro de trabajo<\/li>\n<li>Crear filas en las hojas<\/li>\n<li>Crear celdas en las filas<\/li>\n<li>Agregar contenido a las celdas<\/li>\n<\/ol>\n<p>Vamos a ver c\u00f3mo se hace esto en c\u00f3digo:<\/p>\n<p><strong>1. Crear el libro de trabajo:<\/strong><\/p>\n<pre lang=\"Java\">HSSFWorkbook workbook = new HSSFWorkbook();<\/pre>\n<p><strong><br \/>\n2. Crear una hoja:<\/strong><\/p>\n<pre lang=\"Java\">HSSFSheet sheet = workbook.createSheet(\"Mi Hoja\");<\/pre>\n<p><strong><br \/>\n3. Crear una fila:<\/strong><\/p>\n<pre lang=\"Java\">HSSFRow row = sheet.createRow(0);<\/pre>\n<p><strong><br \/>\n4. Crear una celda:<\/strong><\/p>\n<pre lang=\"Java\">HSSFCell cell = row.createCell(0);<\/pre>\n<p><strong><br \/>\n5. Asignar contenido a la celda:<\/strong><\/p>\n<pre lang=\"Java\">cell.setCellValue(\"\u00a1Hola, Mundo!\");<\/pre>\n<p>&nbsp;<\/p>\n<h2>Guardar el excel generado<\/h2>\n<p style=\"text-align: justify;\">Podemos guardar el excel generado en un archivo, simplemente indicando al libro de trabajo un stream de salida:<\/p>\n<pre lang=\"Java\">OutputStream out = new FileOutputStream(\"src\/main\/resources\/SimpleExcel.xls\");\r\nworkbook.write(out);<\/pre>\n<p>&nbsp;<\/p>\n<h2>C\u00f3digo fuente<\/h2>\n<p style=\"text-align: justify;\">Puedes descargar el c\u00f3digo fuente de ejemplo utilizado en este art\u00edculo desde <a href=\"https:\/\/github.com\/angelnavarro\/Apache-POI-Examples\" target=\"_blank\">mi repositorio de GitHub<\/a>, proyecto <em>Poi-SimpleExcelGenerator<\/em>.<\/p>\n<p>&nbsp;<\/p>\n<h2>M\u00e1s informaci\u00f3n<\/h2>\n<p style=\"text-align: justify;\">Apache POI permite asignar estilos, f\u00f3rmulas, formato, etc. al libro generado. Tratar\u00e9 estos temas en art\u00edculos posteriores. Mientras tanto, puedes consultar toda la informaci\u00f3n desde su <a href=\"https:\/\/poi.apache.org\/spreadsheet\/examples.html\" target=\"_blank\">documentaci\u00f3n oficial<\/a> (en ingl\u00e9s).<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A menudo se necesita manejar archivos de Microsoft Excel desde una aplicaci\u00f3n Java. Puede ser util, por ejemplo, para exportar informaci\u00f3n tabulada, importar datos, generar informes, etc.\u00a0Apache POI es una librer\u00eda de la fundaci\u00f3n Apache, que se ha convertido en <a class=\"more-link\" href=\"https:\/\/www.pixnbgames.com\/blog\/java\/crear-archivos-excel-desde-java-con-apache-poi\/\">Seguir leyendo <span class=\"screen-reader-text\">  Crear archivos Excel desde Java con Apache POI<\/span><span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[38,37,36],"tags":[40,41,39],"language":[5],"_links":{"self":[{"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/posts\/381"}],"collection":[{"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/comments?post=381"}],"version-history":[{"count":15,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/posts\/381\/revisions"}],"predecessor-version":[{"id":397,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/posts\/381\/revisions\/397"}],"wp:attachment":[{"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/media?parent=381"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/categories?post=381"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/tags?post=381"},{"taxonomy":"language","embeddable":true,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/language?post=381"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}