如何把数据窗口的数据保存为Excel文件!!(分数可再加50~200分)

zhoukan 2000-12-18 11:50:00
我用以下程序保存数据窗口的数据为Excel文件时
string filename,path_filename
int i
i=getfilesavename("保存Excel文件",path_filename,filename,"xls","Excel Files(*.xls),*.xls")
if i=1 then
a_dw.SaveAs(path_filename, excel!, TRUE)
Run ("C:\Program Files\Microsoft Office\Office\EXCEL.EXE "+path_filename, Maximized!)
end if
return 1

可保存到指定的文件夹,但是当保存到[我的文档](My Document)时,由于文件夹中间存在
空格,导致存取错误!!
请问各位大虾如何解决
分数可再加50~200分!!!!!!!!!!!!!
...全文
352 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingjiaren 2001-02-27
  • 打赏
  • 举报
回复
给你个例子:
long numcols , numrows , c, r
OLEObject xlapp , xlsub
int ret
numcols = long(dw_1.Object.DataWindow.Column.Count)
numrows = dw_1.RowCount()
xlApp = Create OLEObject
ret = xlApp.ConnectToNewObject( "Excel.Sheet" )
if ret < 0 then
MessageBox("Connect to Excel Failed !",string(ret))
return
end if
xlApp.Application.Workbooks.Open("c:\file.xls") //,false,true
xlApp.Application.Visible = true
xlsub = xlapp.Application.ActiveWorkbook.Worksheets[1]
For c = 1 to numcols
For r = 1 to numrows
xlsub.cells[r,c] = dw_1.object.data[r,c]
Next
Next
xlApp.DisConnectObject()
Destroy xlapp
lcg255 2001-02-27
  • 打赏
  • 举报
回复
其实有API函数可以得到长文件名的8.3文件名的
请参阅这两个函数
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Private Declare Function GetFullPathName Lib "kernel32" Alias "GetFullPathNameA" (ByVal lpFileName As String, ByVal nBufferLength As Long, ByVal lpBuffer As String, lpFilePart As Byte) As Long
silversoft 2001-01-07
  • 打赏
  • 举报
回复
listen
zhoukan 2001-01-03
  • 打赏
  • 举报
回复
to tianjun:
还是不行
关键不是Run
而是GetFileSaveName()和SaveAs()
Tianjun 2001-01-02
  • 打赏
  • 举报
回复
Run ("C:\Program Files\Microsoft Office\Office\EXCEL.EXE '"+path_filename+"'", Maximized!)
The_east_key 2000-12-29
  • 打赏
  • 举报
回复
建议您访问www.etechbase.net/tech,里面有很多资料,也许可以解决您的问题。
访问http://168.168.18.11:81/etechbase/advsearch.php将您的问题输入查询内容框,选择不同的精确程度,即可以找到你所需要的答案。效果还是可以的。
sxtyzy 2000-12-27
  • 打赏
  • 举报
回复
你可以用户选择完路径名后作一下判断,如果有空格,再根据规则修改不就行了吗?
zhoukan 2000-12-27
  • 打赏
  • 举报
回复
谢谢各位都提出了可行的方案,我们的目的在于学习和掌握新的知识点.
参与的朋友都有分
虽然我感觉能实现但是还是不太满意,我想搞清楚这个问题到底是Windows还是pb的bug
还是我水平有限?
谢谢各位
mjk 2000-12-24
  • 打赏
  • 举报
回复
请看下面的语句
dw_1.SaveAs("c:\my documents\测试.xls",Excel!, true)
zhoukan 2000-12-24
  • 打赏
  • 举报
回复
to mjk
不能局限于一个目录
目录为可选项
也就是说:目录是可变化的
qianhaiyuan 2000-12-19
  • 打赏
  • 举报
回复
其实有个很简单的方法,即是:
在打开前保存当前的路径,getFileOpenName后设置path_filename的Path为当前路径,saveas时只用文件名,搞完后恢复成原来的路径。
参考函数:
FUNCTION ulong GetCurrentDirectory(ulong nBufferLength,ref string lpBuffer) LIBRARY "kernel32.dll"

FUNCTION ulong SetCurrentDirectory(ref string lpPathName) LIBRARY "kernel32.dll" ALIAS FOR "SetCurrentDirectoryA"

FUNCTION ulong GetFullPathName(ref string lpFileName,ulong nBufferLength,ref string lpBuffer,ref string lpFilePart) LIBRARY "kernel32.dll" ALIAS FOR "GetFullPathNameA"
lynxliu 2000-12-18
  • 打赏
  • 举报
回复
对了,成功了别忘了给我分呀,加上你再加的50-200分,哈哈。其实,所有的长字符文件名都有别名,可以使用。当然啦,你要保证没有叫mydocum之类的,在好先在dos窗口里面试验一下。 cd mydocu~1看看事不是进到了My Document文件夹
lynxliu 2000-12-18
  • 打赏
  • 举报
回复
使用Mydocu~1就可以啦,那是My Document的另一个名字。在95/98/2000都可以
zhoukan 2000-12-18
  • 打赏
  • 举报
回复
谢谢lynxliu,我又增加一个经验值.
但是!!!
这个方法行不通.
1.我这个程序是给"傻瓜们"编的,他们不知道My document和Mydocu~1.
2.执行这个函数后,出现对话框,他们只知道用[浏览]硬盘的方式打开已有文件夹,或新建文件夹,
并不懂得输入什么"Mydocu~1"之类的[[东西]]!!!

按照你的思路,我可以加一个判断,如果成功的话,我将付款给你!
不过,我还是想得到一个更为理想的方法!!!

1,077

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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