2012-01-22 4 views
0

J'ai une feuille Excel où tous les calculs sont effectués. Je veux créer une interface graphique en Java où je peux entrer la valeur nécessaire pour les calculs à faire dans la feuille Excel. La sortie (résultat) ainsi que le tableau obtenu dans la feuille Excel doivent être affichés dans le cadre de l'interface graphique. La feuille Excel devrait fonctionner en arrière-plan et ne pas être visible par les utilisateurs.Lecture de fichier Excel en utilisant Java

+1

Je suggère d'éviter de travailler avec MS-Office quoi que ce soit. Une meilleure solution sera de travailler avec un fichier CSV standard, pour lequel vous avez beaucoup d'outils d'interaction, ou vous pouvez facilement créer votre propre outil. – RoiG

Répondre

0

Si vous devez utiliser Excel pour les calculs, vous devriez probablement utiliser VBA pour votre interface graphique.

-1

Google est votre ami. Dont voici quelques résultats: JExcelApi avec un bel exemple here et Apache POI qui semble aussi assez puissant

+0

Apache POI peut l'aider à créer ou à lire des fichiers Excel, mais l'aiderait-il à utiliser l'évaluateur Excel à la volée? –

+0

Vous avez raison. Apache POI ne peut lire/écrire que des fichiers Excel et ne peut pas manipuler lui-même les instances Excel :( – rodion

+0

En fait, JExcelApi ne peut pas faire cela non plus – rodion

0

Je ne sais pas si http://www.exceleverywhere.com/java.htm est ce que vous avez besoin ou non. Par ailleurs, Open Office a une API distante pour l'évaluation des fichiers Excel (et autres fichiers Office), Logical Doc utilise cette fonctionnalité. Peut-être que vous pouvez trouver la solution dans son code source de l'édition de la communauté.

0

J'ai trouvé ceci, Using COM from Java. Vous devriez pouvoir employer la machine vitreuse de Microsoft et le microsoft sdk pour Java 4.0 pour employer le serveur d'automation incorporé dans Excel ("Excel.Application").

Si vous ne souhaitez pas utiliser Microsoft Virtual Machine et SDK pour compiler et exécuter le code, vous pouvez également utiliser: JACOB: A JAva-COM Bridge, qui peut être exécuté à partir de n'importe quelle machine virtuelle.

prises directement depuis la page JACOB lien ci-dessus:

L'exemple suivant utilise Microsoft® Excel en tant que serveur d'automatisation:

import com.ms.com.*; 
import com.ms.activeX.*; 

public class DispatchTest 
{ 
    public static void main(String[] args) 
    { 
    ActiveXComponent xl = new ActiveXComponent("Excel.Application"); 
    Object xlo = xl.getObject(); 
    try { 
     System.out.println("version="+xl.getProperty("Version")); 
     System.out.println("version="+Dispatch.get(xlo, "Version")); 
     xl.setProperty("Visible", new Variant(true)); 
     Object workbooks = xl.getProperty("Workbooks").toDispatch(); 
     Object workbook = Dispatch.get(workbooks,"Add").toDispatch(); 
     Object sheet = Dispatch.get(workbook,"ActiveSheet").toDispatch(); 
     Object a1 = Dispatch.invoke(sheet, "Range", Dispatch.Get, 
            new Object[] {"A1"}, 
            new int[1]).toDispatch(); 
     Object a2 = Dispatch.invoke(sheet, "Range", Dispatch.Get, 
            new Object[] {"A2"}, 
            new int[1]).toDispatch(); 
     Dispatch.put(a1, "Value", "123.456"); 
     Dispatch.put(a2, "Formula", "=A1*2"); 
     System.out.println("a1 from excel:"+Dispatch.get(a1, "Value")); 
     System.out.println("a2 from excel:"+Dispatch.get(a2, "Value")); 
     Variant f = new Variant(false); 
     Dispatch.call(workbook, "Close", f); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     xl.invoke("Quit", new Variant[] {}); 
    } 
    } 
} 

En l'état actuel, le code ne compile avec JVC (le compilateur de Microsoft) et ne fonctionne que sous JVIEW (VM de Microsoft). Toutefois, si vous avez la distribution JACOB installé, vous pouvez remplacer les deux premières lignes avec:

import com.jacob.com.*; 
import com.jacob.activeX.*; 

et maintenant, vous pouvez compiler ce avec un compilateur Java et l'exécuter en utilisant une machine virtuelle Java sur une plate-forme Win32.

2

Si vous avez besoin d'une intégration Microsoft Excel JExcel pourrait vous être utile.