我们的PowerBuilder应用程序通过将DataWindow打印为PDF文件来生成报告。现在我们想要修改PB,以便生成Excel而不是PDF。
在我的PB代码中,我尝试使用以下功能:
public function integer save_dw_to_file (datawindow adw_datawindow, string as_filename, string as_folder);
string ls_tmp_file_xls
ls_tmp_file_xls = as_filename+'_temp.xls'
adw_datawindow.saveas(ls_tmp_file_xls,Excel!,true)
return 1
end function
注意:adw_datawindow是我要打印的DataWindow; as_filename是输出文件名。 但是,这似乎不起作用,因为我打开文件时出错。
你知道怎么做吗?我们的环境:
PB版:PB 12 Classic; Excel版本:MS Excel 2007
答案 0 :(得分:2)
你的代码应该有用;你应该检查错误代码,因为它会有有意义的信息。
可能是权限(文件)问题,文件争用问题,错误文件夹(无效字符)等,已锁定的现有文件。先查看文件/文件夹是否存在不会有什么问题。您可以使用FileExists(as_filename)检查文件,也可以通过DirectoryExists(as_directory)检查文件夹。
你可以尝试Excel8!对于Excel版本8或更高版本,但我认为您的Excel!应该工作得很好。
// Add saveastype as parameter to function
public function integer save_dw_to_file (datawindow adw_datawindow, &
string as_filename, &
string as_folder, &
SaveAsType sat_SaveType)
int li_rc
string ls_tmp_file
ls_tmp_file = as_filename
// add file extension based on saveastype
choose case sat_SaveType
case Excel!, Excel5!, Excel8!
ls_tmp_file += '_temp.xls'
case PDF!
ls_tmp_file += '_temp.pdf'
end choose
if FileExists ( ls_tmp_file ) Then
if MessageBox('File already exists','Would you like to replace: ' + &
ls_tmp_file + '?', Question!, YesNo!, 2) = 2 then
return -1
end if
end if
// save type based on parameter to function
li_rc = adw_datawindow.saveas(ls_tmp_file, sat_SaveType, true)
if li_rc = -1 then
MessageBox('Error saving file','Unable to save file: ' + ls_tmp_file)
end if
return li_rc