2009-07-24 231 views
29

Quiero crear un archivo de Excel y escribir datos al igual que escribir un archivo de texto con Java. Traté de cambiar la extensión de archivo de .txt a .xls. Pero quiero letras en negrita en el archivo de Excel. ¿Cómo puedo hacer eso?Crear archivo de Excel en Java

He intentado usar la API JXL, pero cada vez que tengo que crear una etiqueta quiero agregar ninguna etiqueta. ¿No se puede O editar la fila y la columna de la tabla?

+0

¿Qué estás utilizando para crear tu Excel? ¿Puedes mostrar tu código? – Maksim

Respuesta

28

Puede usar Apache POI para crear archivos binarios xls nativos.

O puede usar JExcelApi, que es otra, y algo ligera por lo que puedo recordar, la biblioteca de Java para Excel.

3

Cambiando la extensión de un archivo hace no de ninguna manera cambiar su contenido. La extensión es solo una etiqueta.

Si desea trabajar con hojas de cálculo de Excel usando Java, lea en la biblioteca Apache POI.

0

Usé también JXLS: recibe los datos como un Mapa y una plantilla EXCEL con la sintaxis correcta y devuelve el archivo correctamente rellenado. Los datos en cada celda deben ser JavaBean con visibilidad pública.

No funciona si debe insertar datos en más de 1 hoja: en este caso utilicé POI.

3

Los archivos planos no permiten proporcionar metainformación.

Sugeriría escribir una tabla HTML que contenga la información que necesita, y dejar que Excel la lea en su lugar. Luego puede usar las etiquetas <b> para hacer lo que pide.

0

Para crear una hoja de cálculo y formato a una celda usando POI, véase el ejemplo Working with Fonts, y uso:

font.setBoldweight(Font.BOLDWEIGHT_BOLD); 

PDI funciona muy bien. Hay algunas cosas que no puede hacer (por ejemplo, crear macros de VBA), pero leerá/escribirá hojas de cálculo con macros, por lo que puede crear una hoja de plantilla adecuada, leerla y manipularla con POI, y luego escribirla.

8

Feria de advertencia acerca de la generación de Excel de Apache POI ... (sé que esto es una entrada antigua, pero es importante en caso de que alguien se ve esto de nuevo, como acabo de hacer)

Tenía un problema de pérdida de memoria, que supuestamente fue resuelto para el 2006, pero que la gente recientemente ha estado experimentando. Si desea automatizar la generación de una gran cantidad de Excel (es decir, si desea generar un archivo único, grande, una gran cantidad de archivos pequeños o ambos), le recomendaría usar una API diferente. O eso, o aumentando el tamaño de la pila de JVM a proporciones absurdas, y tal vez investigando las cadenas de intercesión si sabes que en realidad no trabajarás con muchas cadenas diferentes (aunque, por supuesto, las cadenas de internados significan que si tienes una gran cantidad de diferentes cadenas, tendrás un problema de memoria completamente diferente al programa. Por lo tanto, considera eso antes de seguir esa ruta).

+4

Ahora, en 2015, estaba interesado en utilizar Apache POI pero tengo dudas debido a su experiencia, sin embargo, solo quería compartir esta [Pregunta de Preguntas Frecuentes] (https://poi.apache.org/faq.html#faq-N10109) en su sitio web que pensé que podría ser relevante para solucionar problemas similares. – Hesham

+0

@ El enlace de Hesham ya no tiene enlaces a una pregunta específica. [Este] (https://poi.apache.org/faq.html#faq-N10165) y [este] (https://poi.apache.org/faq.html#faq-N1023C) parecen relevantes. – Evan

61
//Find jar from here "http://poi.apache.org/download.html" 
import java.io.*; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.hssf.usermodel.HSSFRow; 
import org.apache.poi.hssf.usermodel.HSSFCell; 

public class CreateExlFile{ 
    public static void main(String[]args) { 
     try { 
      String filename = "C:/NewExcelFile.xls" ; 
      HSSFWorkbook workbook = new HSSFWorkbook(); 
      HSSFSheet sheet = workbook.createSheet("FirstSheet"); 

      HSSFRow rowhead = sheet.createRow((short)0); 
      rowhead.createCell(0).setCellValue("No."); 
      rowhead.createCell(1).setCellValue("Name"); 
      rowhead.createCell(2).setCellValue("Address"); 
      rowhead.createCell(3).setCellValue("Email"); 

      HSSFRow row = sheet.createRow((short)1); 
      row.createCell(0).setCellValue("1"); 
      row.createCell(1).setCellValue("Sankumarsingh"); 
      row.createCell(2).setCellValue("India"); 
      row.createCell(3).setCellValue("[email protected]"); 

      FileOutputStream fileOut = new FileOutputStream(filename); 
      workbook.write(fileOut); 
      fileOut.close(); 
      System.out.println("Your excel file has been generated!"); 

     } catch (Exception ex) { 
      System.out.println(ex); 
     } 
    } 
} 
+0

Hola, esto creó para mí un archivo binario. ¿Cómo puedo crear un archivo Excel que pueda abrir con Excel? – Dejell

+0

Aquí tienes una pequeña pregunta: ¿por qué estás transfiriendo el valor int en HSSFSheet.createRow a un corto? La API toma un int. –

3

He creado una API para crear un archivo de Excel más fácil.

Create Excel - Creating Excel from Template

acaba de establecer los valores requeridos durante la instanciación luego invoque ejecutar(), se crea basándose en su directorio de salida deseada.

Pero antes de utilizar esto, debe tener una plantilla de Excel que se utilizará como plantilla del archivo Excel recién creado.

Además, necesita Apache POI en la ruta de clase de su proyecto.

+0

greate job @Erieze Lagera. gracias –

+0

¿Tiene otras herramientas para generar pdf, csv ...? –

+0

@PashaGharibi Puede probar [JasperReports] (https://community.jaspersoft.com/) para generar PDF. Tiene IDE para crear la plantilla del informe. [Jaspersoft Studio] (https://community.jaspersoft.com/project/jaspersoft-studio/releases) –

3
File fileName = new File(".....\\Fund.xlsx"); 

public static void createWorkbook(File fileName) throws IOException { 
    try { 
     FileOutputStream fos = new FileOutputStream(fileName); 
     XSSFWorkbook workbook = new XSSFWorkbook();    

     XSSFSheet sheet = workbook.createSheet("fund"); 

     Row row = sheet.createRow(0); 
     Cell cell0 = row.createCell(0); 
     cell0.setCellValue("Nav Value"); 

     Cell cell1 = row.createCell(1); 

     cell1.setCellValue("Amount Change");  

     Cell cell2 = row.createCell(2); 
     cell2.setCellValue("Percent Change"); 

     workbook.write(fos); 
     fos.flush(); 
     fos.close(); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 
+0

¿Cómo puedo ver esa existencia del archivo? Estoy trabajando en ello desde la mañana pero sin uso. Por favor, ayúdame. –

Cuestiones relacionadas