通过powerbuilder以编程方式将Excel工作表另存为PDF

时间:2015-03-26 10:12:20

标签: ole powerbuilder

需要通过powerbuilder(Powerbuilder 12.5.1)以编程方式将Excel工作表另存为pdf文件。

我运行下面的代码;但是,我没有得到正确的结果。如果我应该做些不同的事,请告诉我。

 OLEObject  ole_excel;
 ole_excel = create OLEObject;

 IF ( ole_excel.ConnectToObject(ls_DocPath) = 0 ) THEN
      ole_excel.application.activeworkbook.SaveAs(ls_DocPath,17);
      ole_excel.application.activeworkbook.ExportAsFixedFormat(0,ls_DocPath);
 END IF;
 ....... (Parsing values from excel)
 DESTROY ole_excel;

我已经通过这个社区和其他人搜索了解决方案但到目前为止没有运气。我尝试使用在搜索过程中找到的两个不同的命令。它们都返回空对象引用错误。如果有人能指出我正确的方向,那就太棒了。

2 个答案:

答案 0 :(得分:0)

workBook.saveAs()文档说saveAs()具有以下参数:

SaveAs(Filename, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local)

我们需要两个第一个参数:

FileName - 包含文件名和扩展名的完整路径,例如:c:\myfolder\file.pdf

FileFormat - 预定义常量,表示目标文件格式。 根据谷歌(MS没有为XLFileFormat列出pdf格式常量),pdf的FileFormat等于57

所以,尝试使用以下调用:

ole_excel.application.activeworkbook.SaveAs(ls_DocPath, 57);

答案 1 :(得分:0)

在我看来,您需要提及“活动工作簿”。这将是OLEobject类型,因此声明类似于:OLEobject lole_workbook。

然后,您需要将其设置为活动工作簿。在Excel上查找VBA代码(应该在Excel帮助中),以获得类似于' getactiveworkbook'方法。然后你会(在PB中)需要做类似的事情 lole_workbook = ole_excel.application.activeworkbook

这将获得PB对activeworkbook的引用。然后你像这样lole_workbook.SaveAs(ls_DocPath,17)

保存等