Jacob在WebSphere中Excel转换成Pdf的问题。 本帖最后由 andh1222 于 2014-10-30 15:26:15 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 呵呵,不清楚;不过我都是自己写的一个Excel转PDF的。我没做过Word转PDF。 Excel转PDF 用过 word 没试过 。你看看服务器 32 ,还是64 。 服务器是64位的。使用了jacob-1.18-M2-64.dll在Tomcat中发布,Word,Excel都可以导出pdf在WebSphere中发布,Word可以,Excel不行。Excel.exe进程不执行了。很奇怪的问题,分析不出原因。 因为WebSphere 使用的是IBM的jdk,很有可能是这个问题,而且从报错信息看,是Native Method 错误就在下面这句处理上Dispatch.call(office, OFFICE_EXPORT, xlTypePDF, pdfFile);//OFFICE_EXPORT = "ExportAsFixedFormat";我在WebSphere中测试了,将这句屏蔽,代码就通过了。本地测试到这句处理的时候,会弹出Excel的进度条显示效果。初步怀疑是WebSphere服务器中调用Excel有冲突。还在调查中没有什么头绪啊。 简化了一下测试代码 ComThread.InitSTA(); ActiveXComponent app = new ActiveXComponent("Excel.Application"); app.setProperty("Visible", false); Dispatch offices = app.getProperty("Workbooks").toDispatch(); Dispatch office = Dispatch.call(offices, "Open", inputFile, false, true).toDispatch(); // 修改了如下方式保存 ↓ Dispatch.invoke(office, "SaveAs", pdfFile, new Variant(57)); Dispatch.call(office, "Close", false); app.invoke("Quit"); ComThread.Release();测试发生了下面的错误:com.jacob.com.ComFailException: Invoke of: SaveAsSource: Microsoft ExcelDescription: 没有安装打印机。服务器上已经安装了虚拟打印机,但是仍然提示这个错误。有谁碰到过这种打印机引起的问题吗? 你去google 上面找找答案看看。WebSphere 上没用过。我 本地 main 方法,excel word 转都可以。 google访问不了。我本地,Tomcat都OK,就是在WebSphere上失败了。郁闷啊。 今天继续测试了一下SaveAs方法 // 18,39,56:xls 2,10:slk 3:txt 6:csv 9:dif 17:xlt 36:prm // 44:htm 45:mht 46:xml 50:xlsb 12,51:xlsx 52:xlsm 53:xltm // 54:xltx 55:xlam 57:pdf 58:xps 60:ods Dispatch.call(office, "SaveAs", pdfFile, xlsType);在Tomcat服务中,上面哪些文件都可以转换成功。在WebSphere服务中,57:pdf 58:xps 转换失败,其余的都转换成功。现在怀疑两个方向。1. Websphere与Adobe Reader接口发生了问题。2. Server2008上的虚拟打印机不支持Pdf,Xps印刷。继续调查 终于解决了这个困扰我两周的问题了。与Was服务器没有关系,就是Excel访问权限的问题。安装Office2010后,Excel默认访问方式是【启动用户】,Word默认访问方式是【交互式用户】难怪Word可以转换,Excel不能访问呢。修改Excel的访问方式:【The launching user】->【The interactive user】下面两种保存Excel的方法都OK了。① Dispatch.call(office, "ExportAsFixedFormat", 0, pdfFile);② Dispatch.call(office, "SaveAs", pdfFile, 57);方法①可以保存Excel的全部sheet,但是只能保存成0:pdf与1:xps两种类型文件,推荐使用。方法②只能保存Excel的当前sheet,但是可以通过最后一个参数,保存成各种不同类型的文件(csv,xps,xls,html等)。// 1,18,39,56:xls 2,10:slk 3:txt 6:csv 9:dif 17:xlt 36:prm// 44:htm 45:mht 46:xml 50:xlsb 12,51:xlsx 52:xlsm// 53:xltm 54:xltx 55:xlam 57:pdf 58:xps 60:ods 启动print spooler 服务 在eclipse中,tomcat发布多个项目如何操作? 100分 如何去除List中重复的元素,在线等,急。有答案立马结贴 jsp 表单提交数据的问题 tomcat6如何配置虚拟目录,连接池在什么地方配置,如何配 从tomcat4.0升级到5.5的问题,急!!!!!!!!! 求助关于延迟加载的问题 从request中能得到,客户端是什么机器类型(例如:PDA,POCKET PC,手机)吗? java & xml 为什么我的iPlanet Application Server不能正确的使用css? 删除Apache注册表信息 请大神些给我发个spring3.0的所有jar包
使用了jacob-1.18-M2-64.dll在Tomcat中发布,Word,Excel都可以导出pdf
在WebSphere中发布,Word可以,Excel不行。Excel.exe进程不执行了。
很奇怪的问题,分析不出原因。
Dispatch.call(office, OFFICE_EXPORT, xlTypePDF, pdfFile);
//OFFICE_EXPORT = "ExportAsFixedFormat";我在WebSphere中测试了,将这句屏蔽,代码就通过了。
本地测试到这句处理的时候,会弹出Excel的进度条显示效果。初步怀疑是WebSphere服务器中调用Excel有冲突。
还在调查中没有什么头绪啊。
ComThread.InitSTA();
ActiveXComponent app = new ActiveXComponent("Excel.Application");
app.setProperty("Visible", false);
Dispatch offices = app.getProperty("Workbooks").toDispatch();
Dispatch office = Dispatch.call(offices, "Open", inputFile, false, true).toDispatch();
// 修改了如下方式保存 ↓
Dispatch.invoke(office, "SaveAs", pdfFile, new Variant(57));
Dispatch.call(office, "Close", false);
app.invoke("Quit");
ComThread.Release();测试发生了下面的错误:
com.jacob.com.ComFailException: Invoke of: SaveAs
Source: Microsoft Excel
Description: 没有安装打印机。服务器上已经安装了虚拟打印机,但是仍然提示这个错误。
有谁碰到过这种打印机引起的问题吗?
我本地,Tomcat都OK,就是在WebSphere上失败了。
郁闷啊。
// 18,39,56:xls 2,10:slk 3:txt 6:csv 9:dif 17:xlt 36:prm
// 44:htm 45:mht 46:xml 50:xlsb 12,51:xlsx 52:xlsm 53:xltm
// 54:xltx 55:xlam 57:pdf 58:xps 60:ods
Dispatch.call(office, "SaveAs", pdfFile, xlsType);
在Tomcat服务中,上面哪些文件都可以转换成功。
在WebSphere服务中,57:pdf 58:xps 转换失败,其余的都转换成功。现在怀疑两个方向。
1. Websphere与Adobe Reader接口发生了问题。
2. Server2008上的虚拟打印机不支持Pdf,Xps印刷。继续调查
与Was服务器没有关系,就是Excel访问权限的问题。
安装Office2010后,Excel默认访问方式是【启动用户】,Word默认访问方式是【交互式用户】
难怪Word可以转换,Excel不能访问呢。修改Excel的访问方式:【The launching user】->【The interactive user】
下面两种保存Excel的方法都OK了。
① Dispatch.call(office, "ExportAsFixedFormat", 0, pdfFile);
② Dispatch.call(office, "SaveAs", pdfFile, 57);方法①可以保存Excel的全部sheet,但是只能保存成0:pdf与1:xps两种类型文件,推荐使用。
方法②只能保存Excel的当前sheet,但是可以通过最后一个参数,保存成各种不同类型的文件(csv,xps,xls,html等)。
// 1,18,39,56:xls 2,10:slk 3:txt 6:csv 9:dif 17:xlt 36:prm
// 44:htm 45:mht 46:xml 50:xlsb 12,51:xlsx 52:xlsm
// 53:xltm 54:xltx 55:xlam 57:pdf 58:xps 60:ods
print spooler 服务