通过 powerbuilder 以编程方式将 Excel sheet 保存为 PDF

Save an Excel sheet as PDF programatically through powerbuilder

需要通过 powerbuilder (Powerbuilder 12.5.1) 以编程方式将 excel sheet 保存为 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;

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

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

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

我们需要前两个参数:

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

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

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

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

在我看来,您需要参考 'activeworkbook'。这将是 OLEobject 类型,因此声明类似于:OLEobject lole_workbook.

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

这会获取 PB 对活动工作簿的引用。那你saveas之类的是不是这样lole_workbook.SaveAs(ls_DocPath,17)