2009-07-24 13 views
29

Je veux créer un fichier Excel et écrire des données, tout comme écrire un fichier texte avec Java. J'ai essayé de changer l'extension de fichier de .txt à .xls. Mais je veux des lettres en gras dans le fichier Excel. Comment puis je faire ça?Créer un fichier Excel en Java

J'ai essayé d'utiliser l'API JXL, mais chaque fois que je dois créer une étiquette, je ne veux pas ajouter d'étiquette. Impossible d'éditer la ligne et la colonne de la table?

+0

Qu'est-ce que vous utilisez pour créer votre Excel? pouvez-vous montrer votre code? – Maksim

Répondre

28

Vous pouvez utiliser Apache POI pour créer des fichiers XML binaires natifs.

Ou vous pouvez utiliser JExcelApi qui est un autre, et un peu léger pour autant que je me souvienne, bibliothèque Java pour Excel.

3

Modification de l'extension d'un fichier pas en aucune façon changer son contenu. L'extension est juste une étiquette.

Si vous souhaitez utiliser des feuilles de calcul Excel à l'aide de Java, lisez la bibliothèque Apache POI.

0

J'ai également utilisé JXLS: il reçoit les données sous forme de carte et un modèle EXCEL avec la bonne syntaxe et renvoie le fichier correctement rempli. Les données de chaque cellule doivent être JavaBean avec visibilité public.

Cela ne fonctionne pas si vous devez insérer des données dans plus d'une feuille: dans ce cas j'ai utilisé POI.

3

Les fichiers plats ne permettent pas de fournir des méta-informations.

Je suggère d'écrire un tableau HTML contenant les informations dont vous avez besoin, et laissez Excel le lire à la place. Vous pouvez ensuite utiliser les balises <b> pour faire ce que vous demandez.

0

Pour créer une feuille de calcul et le format d'une cellule à l'aide POI, voir l'exemple Working with Fonts et utilisation:

font.setBoldweight(Font.BOLDWEIGHT_BOLD); 

POI fonctionne très bien. Il y a certaines choses que vous ne pouvez pas faire (par exemple créer des macros VBA), mais il va lire/écrire des feuilles de calcul avec des macros, vous pouvez créer une feuille de modèle appropriée, la lire et la manipuler avec POI, puis l'écrire.

8

Avertissement juste à propos de la génération Excel Apache POI ... (je sais que c'est un ancien poste, mais il est important dans le cas où quelqu'un regarde ce à nouveau comme je viens de le faire)

Il avait un problème de fuite de mémoire, qui aurait été résolu en 2006, mais que les gens connaissent encore récemment. Si vous voulez automatiser la génération d'une grande quantité d'Excel (c'est-à-dire, si vous voulez générer un seul fichier volumineux, un grand nombre de petits fichiers, ou les deux), je vous recommande d'utiliser une API différente. Soit cela, ou augmenter la taille de la pile JVM à des proportions absurdes, et peut-être regarder dans les chaînes d'internement si vous savez que vous ne travaillerez pas avec de nombreuses chaînes différentes (bien que, bien sûr, les chaînes d'internement différentes chaînes de caractères, vous aurez un problème de mémoire qui se bloque complètement lors de l'exécution du programme.

+4

Maintenant en 2015 et était intéressé à utiliser Apache POI, mais avez des doutes en raison de votre expérience, mais je voulais juste partager cette [question FAQ] (https://poi.apache.org/faq.html#faq-N10109) sur leur site Web que je pensais être pertinent pour le dépannage de problèmes similaires. – Hesham

+0

@ Le lien de Hesham ne renvoie plus à une question spécifique. [Celui-ci] (https://poi.apache.org/faq.html#faq-N10165) et [celui-ci] (https://poi.apache.org/faq.html#faq-N1023C) semblent pertinents. – 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

Salut, cela a créé pour moi un fichier binaire. comment puis-je créer un fichier Excel que je peux ouvrir avec Excel? – Dejell

+0

Petite question ici - pourquoi lancez-vous la valeur int dans HSSFSheet.createRow à un court? L'API prend un int. –

3

J'ai créé une API pour créer un fichier Excel plus facilement.

Create Excel - Creating Excel from Template

Il suffit de définir les valeurs requises à l'instanciation invoque ensuite exécuter(), il sera créé en fonction de votre répertoire de sortie désiré. Mais avant de l'utiliser, vous devez avoir un modèle Excel qui sera utilisé comme modèle du fichier Excel nouvellement créé.

De plus, vous avez besoin de Apache POI dans le chemin de classe de votre projet.

+0

emploi de gros @Erieze Lagera. merci –

+0

Avez-vous d'autres outils pour générer pdf, csv ...? –

+0

@PashaGharibi Vous pouvez essayer [JasperReports] (https://community.jaspersoft.com/) pour générer des PDF. Il a IDE pour créer le modèle du rapport. [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

Comment puis-je voir cette existence de fichier. Je travaille dessus dès le matin mais inutile. Sil te plait aide moi. –