Java 在.jar中包含excel
我需要知道将excel文件导出到.jar代码中的最佳方法是什么 我使用了GetDesktop open file语句,当我在EclipseIDE中运行该语句时,效果很好。但是,当我将代码导出到.JAR中时,excel工作表将不会打开,它不会做任何事情Java 在.jar中包含excel,java,excel,Java,Excel,我需要知道将excel文件导出到.jar代码中的最佳方法是什么 我使用了GetDesktop open file语句,当我在EclipseIDE中运行该语句时,效果很好。但是,当我将代码导出到.JAR中时,excel工作表将不会打开,它不会做任何事情 public void actionPerformed(ActionEvent e) { try { Desktop desktop = null; if (Desktop.isDesktopSupported()) { desktop
public void actionPerformed(ActionEvent e) {
try { Desktop desktop = null;
if (Desktop.isDesktopSupported()) {
desktop = Desktop.getDesktop();
}
desktop.open(new File("Resources/pics/chart 2.xls"));
} catch (IOException ioe) {
ioe.printStackTrace();
}}
我在jframe中有一个图片图像,图片内部有两个按钮供用户点击。取决于他们点击哪个按钮,我需要打开某个excel文件。仅用于查看目的,不涉及编辑。我尝试使用ApachePOI,但是excel文件根本没有打开,但是当我使用上面的代码时,至少它会在eclipse中打开。我发现还有其他人也有同样的问题,但我的问题是我需要它来打开excel而不是编辑。
谢谢你必须把它从罐子里复制出来。您可以使用
inputstream in=ClassYouAreIn.class.getResource(“someFile.xls”)
获取inputstream。以下是一个例子:
try (InputStream in = ClassYouAreIn.class.getResource("someFile.xls")) {
// copy it here, for example using:
Files.copy(in, Paths.get("somefile.xls"), StandardCopyOption.REPLACE_EXISTING);
}
注意:您的catch代码非常糟糕:异常包含4个有趣的信息位(类型、消息、stacktrace、因果链),您正在丢弃其中的3个,并且由于未中止而导致一连串错误。除非您有一个实际的策略来处理它(并且记录/打印它不是在处理它!),否则您应该始终将它们向前抛出(在这个方法上放置
抛出IOException
)。您需要将excel排列从Jar复制/提取到本地驱动器-记住,Jar文件只是一个zip文件,我正在努力使我的程序尽可能完整,这样,如果我在另一台PC上运行它,我就不必将excel文件复制到本地驱动器上。我看到其他一些程序员确实通过这些程序打开了excel文件。我希望可以这样做。抱歉,更正一下,其他一些程序员从excel文件中提取了信息,但我正在尝试打开excel文件。是的,没关系,excel无法读取嵌入的资源,必须将其提取到本地计算机。我只是想知道为什么它会在eclipse中打开,但当您导出它时就不会了?我试过了,Eclipse正在尝试从getResource更改为getResourceAsStream,对吗?我的main方法中确实有一个异常。但即使使用getResourceAsStream,它也没有输出任何内容。是的,这是正确的。这将输出一些内容或抛出一个错误,如果您没有看到错误,您将捕获异常并在某个地方忽略它。