2012-01-22 272 views
0

我有一個Excel表格,所有的計算都完成了。我想在java中創建一個圖形用戶界面,我可以在Excel表格中輸入計算所需的值。輸出(結果)以及Excel表格中獲得的圖表應顯示在GUI框架中。 Excel工作表應該在後臺運行,並且不會被用戶看到。使用Java閱讀excel文件

+1

我建議避免與MS-Office一起工作。更好的解決方案是使用標準的CSV文件,爲此您可以使用很多工具進行交互,或者可以輕鬆構建自己的工具。 – RoiG

回答

0

如果您必須使用Excel進行計算,則應該使用VBA作爲GUI。

-1

谷歌是你的朋友。我這裏還有一些發現:JExcelApi一個不錯的例子here,並且Apache POI這也似乎是相當強大的

+0

Apache POI可以幫助他創建或讀取excel文件,但它可以幫助他即時使用excel評估程序嗎? –

+0

你說得對。 Apache POI只能讀/寫Excel文件,不能自己操作Excel實例:( – rodion

+0

實際上JExcelApi也不能這樣做 – rodion

0

我不知道是否http://www.exceleverywhere.com/java.htm是你需要或者不是。

順便說一下,Open Office有一些遠程API用於評估excel(和其他Office)文件,Logical Doc使用此功能。可能你可以在其社區版源代碼中找到解決方案。

0

我發現這個,Using COM from Java.您應該能夠使用微軟視窗機和微軟sdk for java 4.0來使用嵌入在Excel(「Excel.Application」)中的自動化服務器。

如果您不想使用Microsoft虛擬機和SDK來編譯和運行代碼,還有:JACOB: A JAva-COM Bridge,它可以從任何虛擬機運行。

直接從上面鏈接JACOB頁摘自:

下面的示例使用Microsoft®Excel作爲自動化服務器:

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[] {}); 
    } 
    } 
} 

目前的情況是,該代碼將只與JVC(Microsoft的編譯器編譯)並且只能在JVIEW(Microsoft的VM)下運行。但是,如果你已經安裝了JACOB分佈,那麼你就可以代替兩個頂部線條搭配:

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

,現在,你可以用任何Java編譯器編譯這個和使用任何Java虛擬機上的任何Win32平臺上運行它。

2

如果您需要Microsoft Excel集成​​可能對您有所幫助。