pb导出office2007的Excel中时的问题!

tianzeng 2008-05-28 02:01:54
在pb的编程中,我想把pb数据窗口的数据导出到excel中,开始使用的是office2003现在使用的是office2007。office升级以后导出就出现了问题,现在调用的excel的一个函数saveas(文件名,文件另存的格式)就是这第二个参数不知道在pb中怎么给赋值,原来office2003时使用的‘43’数据;现在测试的时候执行到这个函数就报错了。如果saveas(文件名)只给一个参数时,保存时不会保存,就是在打开这个保存的文件时会提示打开的文件格式和扩展名不对。现在我现在把它保存为excel9597格式的就不知道怎么传递参数。刚开始学不懂,各位大侠们指点一下吧!!!
...全文
1130 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chao3900 2008-06-11
  • 打赏
  • 举报
回复
恭喜恭喜
tianzeng 2008-06-10
  • 打赏
  • 举报
回复
非常感谢 哈哈 成功了!
chao3900 2008-06-10
  • 打赏
  • 举报
回复
... 代码是 PB CODE 来的, 没有选项就选了个 VB CODE , 别误解 :D
chao3900 2008-06-10
  • 打赏
  • 举报
回复
早上在公司调了一下, 试出来了, 可以的
首先 settransobject 跟 retrieve 是在 open 中提前完成的, 这里主要是导出部分



oleobject loo_excel,loo_sheet

loo_excel = create oleobject
if loo_excel.ConnectToNewObject("Excel.Application") = 0 then
setpointer(HourGlass!)
loo_excel.Application.Workbooks.Add()
loo_sheet = loo_excel.Application.ActiveWorkbook.Worksheets.add()
loo_sheet.name = "SAVEASTEST"
Clipboard("")
Clipboard(dw_1.describe('datawindow.data'))
loo_sheet.Paste()
Clipboard("")
loo_excel.Application.ActiveWorkbook.SaveAs("C:\TESTSAVEAS.xls", -4143)
//这里就是 excel里的 saveas 部分, 参数与 excel 帮助的参数一样, -4143 是 XlNormal 对应的值
loo_excel.quit()
loo_excel.disconnectobject()
setpointer(Arrow!)
end if

destroy loo_sheet
destroy loo_excel
messagebox("Export OK", "Finished!")
tianzeng 2008-06-10
  • 打赏
  • 举报
回复
非常感谢 chao3900
chao3900 2008-06-07
  • 打赏
  • 举报
回复
记得曾经做过一份报表 大体过程是先 connect object 到 excel, 然后把 dw 的data copy 到 excel 的 worksheet 上, 最后用 object(其实就是excel对象), 的save , 不过只用了 excel.appliction.save(ls_path), 我机器没装 pb , 本来想call回公司试一下的, 但是服务器给 shutdown 掉了, 我星期一去试一试回头给你答复
chao3900 2008-06-06
  • 打赏
  • 举报
回复
我用 dw.saveas(ls_path, EXCEL!) 没有错啊, 后来有些对数据类型要求比较严格, 都用 EXCEL5! 这个值了..
tianzeng 2008-06-06
  • 打赏
  • 举报
回复
dw.saveas(ls_path, EXCEL!) 数据窗口控件可以这样指定的,因为在系统中有这种格式。不过wbTargetWorkbook.SaveAs Filename:="C:\ABC.XLS", FileFormat:=xlNormal 使用的应该是OLE控件,saveas函数应该是excel的函数。我就是不知道怎么调用这个函数第二个参数fileformat怎么赋值。不知道怎么解决,我想把vba代码嵌入到pb中应该能够解决,不过还不会这种技术。
tianzeng 2008-06-05
  • 打赏
  • 举报
回复
这种写法在vba中能过使用吧? 在pb中能这样使用吗?
我写了不行,你在pb中是怎么解决的?
chao3900 2008-06-02
  • 打赏
  • 举报
回复
其实你看看帮助就应该知道有
名称 值 描述
xlAddIn 18 Microsoft Office Excel 加载项
xlAddIn8 18 Excel 2007 加载项
xlCSV 6 CSV
xlCSVMac 22 Macintosh CSV
xlCSVMSDOS 24 MSDOS CSV
xlCSVWindows 23 Windows CSV
xlCurrentPlatformText -4158 当前平台文本
xlDBF2 7 DBF2
xlDBF3 8 DBF3
xlDBF4 11 DBF4
xlDIF 9 DIF
xlExcel12 50 Excel 12
xlExcel2 16 Excel 2
xlExcel2FarEast 27 Excel2 FarEast
xlExcel3 29 Excel3
xlExcel4 33 Excel4
xlExcel4Workbook 35 Excel4 工作簿
xlExcel5 39 Excel5
xlExcel7 39 Excel7
xlExcel8 56 Excel8
xlExcel9795 43 Excel9795
xlHtml 44 HTML 格式
xlIntlAddIn 26 国际加载项
xlIntlMacro 25 国际宏
xlOpenXMLAddIn 55 打开 XML 加载项
xlOpenXMLTemplate 54 打开 XML 模板
xlOpenXMLTemplateMacroEnabled 53 打开启用的 XML 模板宏
xlOpenXMLWorkbook 51 打开 XML 工作簿
xlOpenXMLWorkbookMacroEnabled 52 打开启用的 XML 工作簿宏
xlSYLK 2 SYLK
xlTemplate 17 模板
xlTemplate8 17 模板 8
xlTextMac 19 Macintosh 文本
xlTextMSDOS 21 MSDOS 文本
xlTextPrinter 36 打印机文本
xlTextWindows 20 Windows 文本
xlUnicodeText 42 Unicode 文本
xlWebArchive 45 Web 档案
xlWJ2WD1 14 WJ2WD1
xlWJ3 40 WJ3
xlWJ3FJ3 41 WJ3FJ3
xlWK1 5 WK1
xlWK1ALL 31 WK1ALL
xlWK1FMT 30 WK1FMT
xlWK3 15 WK3
xlWK3FM3 32 WK3FM3
xlWK4 38 WK4
xlWKS 4 工作表
xlWorkbookDefault 51 默认工作簿
xlWorkbookNormal -4143 常规工作簿
xlWorks2FarEast 28 Works2 FarEast
xlWQ1 34 WQ1
xlXMLSpreadsheet 46 XML 电子表格


这么多值做参数可选, 不过你若是只想存为 EXCEL 97~2003 格式, 建议你采用下面的方法, 因为我在存报表时也遇到过这样的问题, XLS 扩展名其实就是 EXCEL 97~2003 的格式了, 但是如果你上次打开的是 EXCEL2007 的文件, 那么尽管是XLS文件, 它也会是保存新格式给你的, 那么就要用第二个参数了, 如下:
wbTargetWorkbook.SaveAs Filename:="C:\ABC.XLS", FileFormat:=xlNormal
这样便可以, 另外, 我也是用 PB datawindow + excel 开发系统的 :)

5,138

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧