PB中导出excel 2007文件报错

hy_rr 2010-11-18 12:30:11
我在pb中将sql数据直接导入到excel文件中,excel 2003导入和打开都没有问题,可是同样的代码,本机如果装的是excel 2007时,导入和打开文件,总是报“扩展名或格式不正确”,数据也能导入,但总是出这个提示,希望哪位高手能帮助解决。
代码:
OLEObject myoleobject
integer result
integer value
integer count
integer li_FileNum
string s_lm_id,s_qd_id,s_qd_name
string docname,named


docname="d:\aaa.xls"
li_FileNum = FileOpen( docname, lineMode!, Write!, LockWrite!, Append!)
FileWrite(li_FileNum, "HY")
fileclose(li_FileNum)

value=1
myoleobject = CREATE OLEObject
result = myoleobject.ConnectToObject(docname)


select count(*) into :count from test;
if result=0 then
IF value = 1 THEN
declare wolf_cur cursor for select * from test;

open wolf_cur ;
for s_count=1 to count
fetch wolf_cur into :s_lm_id,:s_qd_id,:s_qd_name;
IF result = 0 THEN
myoleobject.application.workbooks(1).worksheets(1).cells(s_count,1).value = s_lm_id
myoleobject.application.workbooks(1).worksheets(1).cells(s_count,2).value = s_qd_id
myoleobject.application.workbooks(1).worksheets(1).cells(s_count,3).value = s_qd_name
end if
next
myoleobject.application.workbooks(1).save()
DESTROY myoleobject

close wolf_cur;
messagebox('信息提示','数据导出结束')

else
messagebox('信息提示','保存失败')
end if
else
messagebox("","保存失败")
END IF
...全文
979 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
second_huang 2012-03-08
  • 打赏
  • 举报
回复
楼主和我们分享一下你解决后的代码呗
second_huang 2011-08-27
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 shandyjj 的回复:]
先判断本机的excel是哪个版本,跟进版本来选择下载后文件的扩展名称就可以了。
[/Quote]

我现在导出格式为*.XLSX的文件,用EXCEL打开的时候提示我“扩展名或格式不正确”,把文件扩展名改为XLS就能看见数据,请教如何解决
second_huang 2011-08-27
  • 打赏
  • 举报
回复
还有个问题就是导入导出数据之后,退出运行程序,报pb9.0应用程序错误,还有什么内存不能为‘READ’
yyoinge 2011-08-27
  • 打赏
  • 举报
回复
OleObject   xlapp
Integer li_row
String ls_filename, ls_version, ls_info

xlapp = Create oleobject
li_row = xlapp.ConnectToNewObject("Excel.Application")
If li_row < 0 Then
Messagebox("系统提示","不能运行Excel程序,请检查是否已安装Microsoft Excel软件!",Stopsign!)
Else
ls_version = String(xlapp.Version)
Choose Case ls_version
Case '9.0'
ls_info = "Excel 2000"
Case '10.0'
ls_info = "Excel 2002/XP"
Case '11.0'
ls_info = "Excel 2003"
Case '12.0'
ls_info = "Excel 2007"
Case '14.0'
ls_info = "Excel 2010"
Case Else
ls_info = "未知版本"
End Choose
Messagebox("系统提示", ls_info + " 版本号:" + ls_version + "~t")
xlapp.DisconnectObject()
End If


second_huang 2011-08-27
  • 打赏
  • 举报
回复
请问如何判断本机EXCEL版本
shandyjj 2011-07-04
  • 打赏
  • 举报
回复
先判断本机的excel是哪个版本,跟进版本来选择下载后文件的扩展名称就可以了。
不是导演李安 2011-05-27
  • 打赏
  • 举报
回复
我也想知道。同样遇到问题
dragon0236 2011-05-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hy_rr 的回复:]
谢谢大家了,我已经解决了!改了代码,已经全搞定了!
[/Quote]
我也想知道,- -!
zqq231 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hy_rr 的回复:]
谢谢大家了,我已经解决了!改了代码,已经全搞定了!
[/Quote]

请问是怎么改的呢?我也遇到这个问题,请指导,谢谢。
zlf19810306 2010-11-18
  • 打赏
  • 举报
回复
myoleobject.ConnectToNewObject(docname) 不用pb来创建,直接用excel创建一个新的excel文件试试
hy_rr 2010-11-18
  • 打赏
  • 举报
回复
谢谢大家了,我已经解决了!改了代码,已经全搞定了!
zlf19810306 2010-11-18
  • 打赏
  • 举报
回复
这个只能找excel2007的vba编程文档看看了
hy_rr 2010-11-18
  • 打赏
  • 举报
回复
我换成aaa.xlsx在excel 2007的机器上也同样报错,总提示我格式不对
hy_rr 2010-11-18
  • 打赏
  • 举报
回复
我在不同的机器上测试过,相同的代码,在装了2003上没有问题,在装了2007的机器上就报错,可是数据能够导出来
builderwfy 2010-11-18
  • 打赏
  • 举报
回复
EXCEL有點麻煩,連擴展名都改了
PB菜鸟 2010-11-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hy_rr 的回复:]
我之前试过,存成xlsx的不成,也报同样的错误!csv格式的,我试过了,是不报错,可是打开excel文件里面的内容全都集中在一格中了,没有分开!
[/Quote]
呵呵 没装2007,安装2007应该兼容以前的版本的,你的代码导出的是2003格式的,用2007应该可以打开的.
hy_rr 2010-11-18
  • 打赏
  • 举报
回复
我之前试过,存成xlsx的不成,也报同样的错误!csv格式的,我试过了,是不报错,可是打开excel文件里面的内容全都集中在一格中了,没有分开!
PB菜鸟 2010-11-18
  • 打赏
  • 举报
回复
你导出文件的扩展名是xls,用2007是打不开的,她的扩展名是xlsx
你试试更换保存文件的扩展名位xlsx看行不行,不行了可以先导入到csv格式或者txt格式再用excel2007打开
Anycell Report(简称AC Report)是一款国式报表组件,是国内最早的基于表格,支持图文混排、公式和脚本的国式报表工具之一。就如Anycell Report的名称那样,灵活强大的表格功能一直是AC Report区别于其它软件或控件最显著的特征之一,AC Report 表格取消了传统表格概念“列”的概念,每一行上的单元格数量可以不等,且可以自由活动,调整某行上单元格的宽度时,不影响其它行的单元格。在制作复杂的国式报表时可以避免很多不必要的合并拆分操作,制作表格更加方便和随心所欲,并且省时省力。AC Report单元格支持多种丰富的形态,例如格式化文本、图片、图表、条码、OLE容器等。   AC Report的一些基本特点:   1.独具特色的表格,风格与Word表格相似,但可以做出比Word或Excel更灵活的表格来。   2. 功能全面、专业的国式报表设计器,国用户更易于学习和接受。   3.支持多种单元格样式,可以打印图像、图表(直方图、折线图等)、Rich文本、条形码、式财务帐薄、支持在报表嵌入Word、Excel文档等。   4. 强大的计算和合计功能。内置表达式解析系统和函数库。   5. 可扩充性,可以在应用程序给报表引擎扩充函数库、报表样式和单元格样式。   6.支持多种报表样式,如清单式、分组、交叉表、以及子报表等。   7. 支持多栏式报表。   8. 和应用程序完美结合,支持windows下所有的开发工具和程序语言(例如Delphi、C++、VB、PB、.NET、易语言),最终用户在设计器里可直接选择打印字段,生成表达式,报表设计器用户容易学习理解。   9. 支持脚本和窗体编程,报表设计人员可以编写脚本、在报表设计器里为报表添加窗体,为最终用户提供更丰富的交互功能。   10. 既可以使用应用程序的数据集,也支持在报表直接连接各种数据库,通过SQL直接获得报表需要的数据。   11.无失真导出Excel、Word、Html格式的文档。   Ver2.45.008 bug修正:   1.当计算公式出错导致生成报表失败,退出调用AC Report的程序时发生内存错误。   2.含有子报表且子报表的列数大于主报表,不能导出Excel的问题。   3.和Skin皮肤控件冲突的问题(主要是导出Excel报错)。   Ver2.45主要变动1.修正了独立子报表(未嵌入到所属页面的子报表)预览后退出程序时,发生内存泄漏的bug。   2.图片单元格支持在公式设置URL链接地址。   3.导出Excel功能改进。   4.Cell()函数空值处理。   5.界面修改。   6.修正VCL控件和demo编译出错的问题。   Ver 2.4 主要变动:   1.可拖动对象功能增强(现在AC不仅可以支持强大的表格功能,也可以使用AC Report 像传统的报表工具例如FastReport或水晶报表那样设计报表了)。   2.在新建页面时,增加了“数据模块”类型,用来存放报表的数据控件,更方便模板的管理。   3.对话框(Form)功能增强。   4.支持双面打印。   5.其它:   财务帐薄支持套打。   单元格支持批量拖动。   设计器界面优化。   相关bug修正。   新功能相关的Demo。   Ver2.45主要变动:   1.修正了独立子报表内存泄漏的bug。   2.图片单元格支持在公式设置URL链接地址。   3.导出Excel功能改进。   4.Cell()函数空值处理。   5.界面修改。   6.修正VCL控件和demo编译出错的问题。   安装包含使用和开发接口文档,及Delphi、VB、VC++、C#.net、VB.net和WEB下的demo。
补丁下载(1.15M): http://u.115.com/file/f8f8e7d9fa# Ver2.45.407 重大功能完善: 1.当计算公式出错导致生成报表失败,退出调用AC Report的程序时发生内存错误。 2.含有子报表且子报表的列数大于主报表,不能导出Excel的问题。 3.和Skin皮肤控件冲突的问题(主要是导出Excel报错)。 4.进一步完善导出Excel的算法,将多个页面格式迥异的报表导出在一个Sheet上时,改进了算法,使得在Excel所需列的数量和宽度计算精确度更高,真正做到无失真导出,容错性更好,对于任何复杂的报表,都可以正确导出 Ver2.45主要变动 1.修正了独立子报表(未嵌入到所属页面的子报表)预览后退出程序时,发生内存泄漏的bug。 2.图片单元格支持在公式设置URL链接地址。 3.Cell()函数空值处理。 4.界面修改。 5.修正VCL控件和demo编译出错的问题 ACReport简介 Anycell Report(简称AC Report)是一款国式报表组件,是国内最早的基于表格,支持图文混排、公式和脚本的国式报表工具之一。就如Anycell Report的名称那样,灵活强大的表格功能一直是AC Report区别于其它软件或控件最显著的特征之一,AC Report 表格取消了传统表格概念“列”的概念,每一行上的单元格数量可以不等,且可以自由活动,勿须上下对齐,在制作复杂的国式报表时可以避免很多不必要的合并拆分操作,制作表格更加方便和随心所欲,并且省时省力。AC Report单元格支持多种丰富的形态,例如格式化文本、图片、图表、条码、OLE容器等。 AC Report的一些基本特点: 1.独具特色的表格,风格与Word表格相似,但可以做出比Word或Excel更灵活的表格来。 2. 功能全面、专业的国式报表设计器,国用户更易于学习和接受。 3.支持多种单元格样式,可以打印图像、图表(直方图、折线图等)、Rich文本、 条形码、式财务帐薄、支持在报表嵌入Word、Excel文档等。 4. 强大的计算和合计功能。内置表达式解析系统和函数库。 5. 可扩充性,可以在应用程序给报表引擎扩充函数库、报表样式和单元格样式。 6.支持多种报表样式,如清单式、分组、交叉表、以及子报表等。 7. 支持多栏式报表。 8. 和应用程序完美结合,支持windows下所有的开发工具和程序语言(例如Delphi、C++、VB、PB、.NET、易语言),最终用户在设计器里可直接选择打印字段,生成表达式,报表设计器用户容易学习理解。 9. 支持脚本和窗体编程,报表设计人员可以编写脚本、在报表设计器里为报表添加窗体,为最终用户提供更丰富的交互功能。 10. 既可以使用应用程序的数据集,也支持在报表直接连接各种数据库,通过SQL直接获得报表需要的数据。 11.无失真导出Excel、Word、Html格式的文档
包含使用和开发接口文档,及Delphi、VB、VC++、C#.net、VB.net和WEB下的demo。 ACReport简介 Anycell Report(简称AC Report)是一款国式报表组件,是国内最早的基于表格,支持图文混排、公式和脚本的国式报表工具之一。就如Anycell Report的名称那样,灵活强大的表格功能一直是AC Report区别于其它软件或控件最显著的特征之一,AC Report 表格取消了传统表格概念“列”的概念,每一行上的单元格数量可以不等,且可以自由活动,勿须上下对齐,在制作复杂的国式报表时可以避免很多不必要的合并拆分操作,制作表格更加方便和随心所欲,并且省时省力。AC Report单元格支持多种丰富的形态,例如格式化文本、图片、图表、条码、OLE容器等。 AC Report的一些基本特点: 1.独具特色的表格,风格与Word表格相似,但可以做出比Word或Excel更灵活的表格来。 2. 功能全面、专业的国式报表设计器,国用户更易于学习和接受。 3.支持多种单元格样式,可以打印图像、图表(直方图、折线图等)、Rich文本、 条形码、式财务帐薄、支持在报表嵌入Word、Excel文档等。 4. 强大的计算和合计功能。内置表达式解析系统和函数库。 5. 可扩充性,可以在应用程序给报表引擎扩充函数库、报表样式和单元格样式。 6.支持多种报表样式,如清单式、分组、交叉表、以及子报表等。 7. 支持多栏式报表。 8. 和应用程序完美结合,支持windows下所有的开发工具和程序语言(例如Delphi、C++、VB、PB、.NET、易语言),最终用户在设计器里可直接选择打印字段,生成表达式,报表设计器用户容易学习理解。 9. 支持脚本和窗体编程,报表设计人员可以编写脚本、在报表设计器里为报表添加窗体,为最终用户提供更丰富的交互功能。 10. 既可以使用应用程序的数据集,也支持在报表直接连接各种数据库,通过SQL直接获得报表需要的数据。 11.无失真导出Excel、Word、Html格式的文档 Ver 2.3主要新增或修改的功能 一、增加的功能: 1、支持二维条码 2、图片单元格支持gif格式 4、增加了一边生成报表一边预览的选项,减少用户的等待感 5、清单报表增加了明细分栏功能。 6、分组报表增加每组分页补充空行功能。 7、清单和分组报表,补充空行时,可以选择是否显示横线和竖线条。 8、页面选项增加“保持页脚在页面底部”、“是否套打模板”、“不打印背景图”等选项。 9、增加了批量设置字段别名的方法:SetDataFieldAliasName,使得英文字段在报表可以用文展现,更便于最终用户设计报表。 10、在设计器页面左边“报表样式”显示区单击报表样式标签可以直接调出报表样式设置窗口 11、增加了Delphi下专用的VCL控件(对COM的再次封装,Delphi开发人员使用AC更加简单方便)。 12、Delphi的接口源码增加了LoadFromCommonBlobField和SaveToCommonBlobField函数,可以直接从一个非ADO的Dataset装入或保存模板文件。 13、函数优化,在同一页如果两个或多个公式有公共子公式,则此公共子公式只会执行一次,例如:有以下两个公式: NumToCnText(sum(DocLines, DocLines.LineTotal)/10000, 1) NumToCnText(sum(DocLines, DocLines.LineTotal) * 100, 1) 在运行报表时,sum(DocLines, DocLines.LineTotal) 函数在同页只会被执行一次。 二、bug修正和功能变动 1、修正了右对齐单元格时,不能及时刷新的问题。 2、修正了调用Init方法后,退出应用程序报错的问题。 3、修正了退出“报表页面选项”窗口后,右下脚属性列表没有及时刷新的问题。 4、在设计器,如果某行的上边线不可见,则不覆盖上一行单元格的下边线(旧版会覆盖)。 5、修正了不能撤销粘贴单元格操作的bug 6、修正了页面属性打印机名称不能保存的问题 三、demo 1、增加了“保存模板到数据库”的demo 2、增加了自定义预览界面的demo 3、增加了分组合并报表demo 4、增加了清单报表在一页分多栏打印的demo 5、增加了web下的demo 四、其它 1、界面的优化,工具栏风格改变、增加了所选单元格在标尺上的位置标注等。 2、AcRptEngine新增了一些方法,如ClearContents、ExportAcrToStream等

740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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