用Java读取excel文件

用Java读取excel文件,java,excel,Java,Excel,我有一张excel表格,上面有所有的计算。我想用java创建一个GUI,在这里我可以输入在excel工作表中进行计算所需的值。输出(结果)以及excel工作表中获得的图表应显示在GUI框架中。excel工作表应在后台运行,且用户不可见。如果必须使用excel进行计算,您可能应该在GUI中使用VBA。谷歌是您的朋友。以下是一些发现:有一个很好的例子,它看起来也很强大,我不确定这是否是你需要的 顺便说一句,OpenOffice有一些远程API用于评估excel(和其他Office)文件,使用此功能。

我有一张excel表格,上面有所有的计算。我想用java创建一个GUI,在这里我可以输入在excel工作表中进行计算所需的值。输出(结果)以及excel工作表中获得的图表应显示在GUI框架中。excel工作表应在后台运行,且用户不可见。

如果必须使用excel进行计算,您可能应该在GUI中使用VBA。

谷歌是您的朋友。以下是一些发现:有一个很好的例子,它看起来也很强大,我不确定这是否是你需要的

顺便说一句,OpenOffice有一些远程API用于评估excel(和其他Office)文件,使用此功能。可能您可以在其社区版源代码中找到解决方案。

我发现了这一点,您应该能够使用microsoft vitrual机器和microsoft sdk for java 4.0来使用嵌入Excel中的自动化服务器(“Excel.Application”)

如果您不想使用Microsoft虚拟机和SDK来编译和运行代码,还有:,可以从任何VM运行

直接从上述链接页面获取:

以下示例使用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(微软的编译器)编译,并且只能在JVView(微软的虚拟机)下运行。但是,如果安装了JACOB发行版,则可以将两个顶部行替换为:

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

现在,您可以使用任何Java编译器编译它,并在任何Win32平台上使用任何Java虚拟机运行它

如果您需要Microsoft Excel集成,可能会对您的应用程序有所帮助。

Apache POI可以帮助他创建或读取Excel文件,但它会帮助他动态使用Excel evaluator吗?您是对的。Apache POI只能读/写Excel文件,并且不能自己操作Excel实例:(事实上,JExcelApi也不能做到这一点。不确定是否有免费的工具可以做到这一点。如果你需要使用Java,你可能必须购买一个工具。或者,正如其他人所建议的,使用VBA或.Net。我写过一个C应用程序,以前也做过类似的事情。运行得很好。我建议避免使用MS Office,还有什么是e一个更好的解决方案是使用标准的CSV文件,您可以使用很多工具来与之交互,或者您可以轻松地构建自己的工具。