微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

作为Windows服务运行时,Excel无法读取由Java进程写入的文件

不容易在一句话中总结这个问题…

我有一个在Java 6上运行的Tomcat 7上的Web应用程序。该应用程序访问Excel工作表使用JACOB,它使用JNI和COM,启动一个单独的Excel进程。 为了确保Excel工作表是可变的,我的Java进程使用File.createTempFile()创build原始XLS的副本,并将临时文件传递给Excel进程。

OS是Windows Server 2008. Excel版本来自Office 2010。

我的问题:只要Tomcat是从命令行或者从IDE开始交互式启动的,一切正常。 如果我启动Tomcat作为服务(使用用户SYstem),Excel无法打开临时文件,并说:

如何使用nmake的C + +项目

通过C#显示“设备和打印机”窗口?

在MS Windows上安装Django,manage.py“无法导入Django”

C ++确定是否有声音完成播放

Python:可以使用py2exe编译的脚本冻结操作系统吗?

com.jacob.com.ComFailException: Invoke of: Open Source: Microsoft Excel Description: Microsoft Excel kann auf die Datei 'C:Program Filesapache-tomcattempEntwickl-Auftr-Bez-n-Maß 54-131 215-2 Optimierung 210-0 210-3.xlsx6119727457676255726.clone' nicht zugreifen. Dies kann mehrere Gründe haben: • Der Name des Dokuments oder der Pfad ist nicht vorhanden. • Das Dokument wird von einem anderen Programm verwendet. • Der Name der Arbeitsmappe,die gespeichert werden soll,ist identisch zu dem Namen eines anderen Dokuments,welches schreibgeschützt ist. com.jacob.com.dispatch.invokev(Native Method) com.jacob.com.dispatch.invokev(UnkNown Source) com.jacob.com.dispatch.callN(UnkNown Source) com.jacob.com.dispatch.call(UnkNown Source) de.insites.ms.com.xls.Workbook.<init>(UnkNown Source) de.insites.ms.com.xls.Excel.openWorkbook(UnkNown Source) de.harti.harticalc.excel.MahanoExcel.<init>(UnkNown Source) de.harti.harticalc.excel.MahanoExcel.create(UnkNown Source) de.harti.harticalc.excel.ExcelProcessor.getExcel(UnkNown Source) de.harti.harticalc.excel.ExcelProcessor.calculatePosition(UnkNown Source) de.harti.mahano.service.PositionServlet.doGet(UnkNown Source) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) de.harti.mahano.service.AbstractMahaNowsServlet.service(UnkNown Source) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) de.harti.mahano.service.CharsetFilter.doFilter(UnkNown Source)

德语信息意味着Excel无法访问该文件,因为该文件不存在,被另一个进程locking或以某种方式写入locking。

我validation了文件存在,它是一个可读的Excel文档(我可以使用Excel交互式地打开它)。

我的猜测是,Windows拒绝EXCELsubprocess访问我的文件,因为它是由它不信任的java进程创build的。

当Tomcat作为Windows服务运行时,如何让Excel访问该文件

编辑 :exception消息的英文版本

ERROR - Invoke of: Open Source: Microsoft Office Excel Description: Microsoft Office Excel cannot access the file 'c:marchenamarchena10workmarchenabatch_58288inputcontent_1.xlsx'. There are several possible reasons: ? The file name or path does not exist. ? The file is being used by another program. ? The workbook you are trying to save has the same name as a currently open workbook.

解决scheme在这里find解决scheme 我不得不创build文件

C:WindowsSysWOW64configsystemprofileDesktop

manualy。 似乎在Windows Server 2008上,当以SYstem身份运行时,Excel需要此文件夹,但如果缺less,则不会创build。

感谢您的提示

如何通过Java中的telnet执行open命令?

使用.NET发送电子邮件 – 并不容易

自定义窗口devise

如何在使用C ++中的SendMessage的应用程序之间传递string

为什么os.path.getsize给我错误的大小?

这里找到解决方案的链接 。 我不得不创建文件

C: WINDOWS Syswow64资料 CONfig systemprofile 桌面

manualy。 似乎在Windows server 2008上,Excel作为SYstem运行时需要此文件夹,但如果缺失则不会创建它。

感谢您的提示

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐