[英]Reading excel file using Java
我有一張Excel工作表,其中所有計算都已完成。 我想在Java中創建一個GUI,可以在其中輸入在Excel工作表中完成計算所需的值。 輸出(結果)以及在excel工作表中獲得的圖表應顯示在GUI框架中。 Excel工作表應在后台運行,並且對用戶不可見。
如果您需要Microsoft Excel集成, JExcel可能對您有所幫助。
如果必須使用Excel進行計算,則可能應將VBA用於GUI。
我不確定http://www.exceleverywhere.com/java.htm是否是您所需要的。
通過Open Office擁有一些用於評估excel(和其他Office)文件的遠程API, Logical Doc使用了此功能。 也許您可以在其社區版源代碼中找到該解決方案。
我從Java使用COM找到了這個。 您應該能夠使用Microsoft Vitrual機器和Microsoft SDK for Java 4.0來使用嵌入在Excel(“ Excel.Application”)中的自動化服務器。
如果您不想使用Microsoft虛擬機和SDK來編譯和運行代碼,則還有: JACOB:一個JAva-COM Bridge ,可以從任何VM上運行。
直接從上面鏈接的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(微軟的編譯器)進行編譯,並且只能在JVIEW(微軟的VM)下運行。 但是,如果已安裝JACOB發行版,則可以用以下兩個頂行替換:
import com.jacob.com.*;
import com.jacob.activeX.*;
現在,您可以使用任何Java編譯器進行編譯,並可以在任何Win32平台上使用任何Java VM運行它。
Google是您的朋友。 :我這里還有一些發現JExcelApi的一個很好的例子在這里 ,和Apache的POI也似乎相當強大
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.