2009-07-24 4 views
29

Voglio creare un file Excel e scrivere i dati proprio come scrivere un file di testo con Java. Ho provato a cambiare l'estensione del file da .txt a .xls. Ma voglio lettere in grassetto nel file di Excel. Come lo posso fare?Crea file Excel in Java

Ho provato a utilizzare l'API JXL, ma ogni volta che devo creare un'etichetta voglio aggiungere nessuna etichetta. Non è possibile modificare la riga e la colonna della tabella?

+0

Che cosa stai usando per creare il tuo excel? puoi mostrare il tuo codice? – Maksim

risposta

28

È possibile utilizzare Apache POI per creare file xls binari nativi.

Oppure è possibile utilizzare JExcelApi che è un altro, e un po 'leggero per quanto posso ricordare, libreria Java per Excel.

3

La modifica dell'estensione di un file fa non in alcun modo cambia il suo contenuto. L'estensione è solo un'etichetta.

Se si desidera lavorare con fogli di calcolo Excel utilizzando Java, consultare la libreria Apache POI.

0

Ho utilizzato anche JXLS: riceve i dati come una mappa e un modello EXCEL con la sintassi corretta e restituiscono il file correttamente compilato. I dati di ogni cella devono essere un JavaBean con visibilità pubblico.

Non è necessario inserire dati in più di 1 foglio: in questo caso ho utilizzato POI.

3

I file flat non consentono di fornire informazioni meta.

Suggerirei di scrivere una tabella HTML contenente le informazioni necessarie e lasciare che sia Excel a leggerlo. Puoi quindi utilizzare i tagb > per fare ciò che chiedi.

0

Per creare un foglio di calcolo e formatta una cella utilizzando POI, vedere l'esempio Working with Fonts, ed impiego:

font.setBoldweight(Font.BOLDWEIGHT_BOLD); 

POI funziona molto bene. Ci sono alcune cose che non puoi fare (ad es. Creare macro VBA), ma leggerà/scriverà fogli di calcolo con macro, così puoi creare un foglio modello adatto, leggerlo e manipolarlo con POI, e poi scriverlo.

8

Fiera avvertimento circa la generazione di Excel di Apache POI ... (So che questo è un vecchio post, ma è importante nel caso in cui qualcuno guarda questo in su ancora una volta come ho appena fatto)

Aveva un problema di perdita di memoria, che presumibilmente è stato risolto entro il 2006, ma che le persone hanno sperimentato abbastanza recentemente. Se desideri automatizzare la generazione di una grande quantità di Excel (ad esempio, se desideri generare un singolo file di grandi dimensioni, un numero elevato di file di piccole dimensioni o entrambi), ti consigliamo di utilizzare un'API diversa. In alternativa, o aumentando le dimensioni dello stack JVM in proporzioni assurde, e magari esaminando le stringhe interne se sai che in realtà non lavorerai con molte stringhe diverse (anche se, ovviamente, le stringhe interne significano che se hai un numero elevato di stringhe diverse, avrai un problema di memoria completamente diverso dal programma, quindi considera che prima di seguire questa strada).

+4

Ora nel 2015 era interessato a usare il POI di Apache ma dubita della tua esperienza, tuttavia volevo solo condividere questa [domanda FAQ] (https://poi.apache.org/faq.html#faq-N10109) sito web che ho ritenuto pertinente per la risoluzione di problemi simili. – Hesham

+0

@ Il link di Hesham non collega più a una domanda specifica. [Questo] (https://poi.apache.org/faq.html#faq-N10165) e [questo] (https://poi.apache.org/faq.html#faq-N1023C) sembrano rilevanti. – 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

Ciao, questo ha creato per me un file binario. come posso creare un file Excel che posso aprire con Excel? – Dejell

+0

Piccola domanda qui - perché stai trasmettendo il valore int in HSSFSheet.createRow a un breve? L'API prende un int. –

3

Ho creato un'API per creare un file di Excel più semplice.

Create Excel - Creating Excel from Template

Basta impostare i valori richiesti in fase di istanziazione quindi richiamare execute(), verrà creato in base alla directory di output desiderato.

Prima di utilizzare questo, è necessario disporre di un modello di Excel che verrà utilizzato come modello del file Excel appena creato.

Inoltre, è necessario Apache POI nel percorso di classe del progetto.

+0

greate job @Erieze Lagera. grazie –

+0

Hai altri strumenti per generare pdf, csv ...? –

+0

@PashaGharibi Si può provare [JasperReports] (https://community.jaspersoft.com/) per generare PDF. Ha IDE per creare il modello del report. [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

Come posso vedere che il file esiste. Ci sto lavorando dal mattino ma non serve. per favore aiutatemi. –