求助:如何把剪贴板中的大量数据方便保存为文本文件?

tomorrower 2013-09-04 05:04:30
环境:我使用pb读取大量的excel数据,并通过拷贝导入到数据窗口中
代码如下:
myoleobject1 = Create OLEObject
result = myoleobject1.ConnectToNewObject("excel.application") //连接excle
myoleobject1.Workbooks.Open(ls_xlsxfilename_with_dir) //打开指定的文件

myoleobject1.ActiveWorkbook.Sheets(ls_sheet).SELECT //选择某一个sheet
myoleobject1.activesheet.cells.Copy //拷贝大量数据
然后导入到一个datastore中

li_count = ds_xls.ImportClipboard ( 1 ) //导入数据

现在的问题是,我导入的数据比较大,有6万行,保存的文本有32M大小

以上代码在windowsXP中一直正常工作,但是在windows2003server中,却发生内存溢出,表现为某某内存不能为read,然后程序就飞出了,请问,windows2003的剪贴板缓冲区比较小吗?

第二,我想将这个copy出来的大量tab分割的文本信息,如何方便的保存为一个文本文件?
...全文
405 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tomorrower 2013-09-13
  • 打赏
  • 举报
回复
引用 8 楼 kenshu 的回复:
[quote=引用 7 楼 tomorrower 的回复:] 我的天,filewrite只能写32k,我32M数据就要写1024次了
大哥,这个是程序写的,又不是你写,程序写10000次都不关你事。[/quote] 我现在的问题是,我的数据在系统剪贴板里面,都不知道有多少大的数据量,还不知道如何循环结束
kenshu 2013-09-12
  • 打赏
  • 举报
回复
引用 9 楼 wag_enu 的回复:
[quote=引用 8 楼 kenshu 的回复:] [quote=引用 7 楼 tomorrower 的回复:] 我的天,filewrite只能写32k,我32M数据就要写1024次了
大哥,这个是程序写的,又不是你写,程序写10000次都不关你事。[/quote] PB 10 开始像,具体不太清楚,反正PB11.5 肯定有。 有 FileWriteEx ( file#, blob {, length }) 可以一次写入超32K数据,[/quote] 受教了。 我查了一下,PB10就有这个函数。 不过之前用PB的时候,都是自己写一个函数,自己循环,10多年都不用改这个函数,以后就再也不用管了。
wag_enu 2013-09-12
  • 打赏
  • 举报
回复
引用 8 楼 kenshu 的回复:
[quote=引用 7 楼 tomorrower 的回复:] 我的天,filewrite只能写32k,我32M数据就要写1024次了
大哥,这个是程序写的,又不是你写,程序写10000次都不关你事。[/quote] PB 10 开始像,具体不太清楚,反正PB11.5 肯定有。 有 FileWriteEx ( file#, blob {, length }) 可以一次写入超32K数据,
kenshu 2013-09-12
  • 打赏
  • 举报
回复
引用 7 楼 tomorrower 的回复:
我的天,filewrite只能写32k,我32M数据就要写1024次了
大哥,这个是程序写的,又不是你写,程序写10000次都不关你事。
tomorrower 2013-09-12
  • 打赏
  • 举报
回复
引用 6 楼 kenshu 的回复:
[quote=引用 2 楼 tomorrower 的回复:] [quote=引用 1 楼 kenshu 的回复:] 如果要简单,放个多行编辑框在窗口中(不显示) ....copy mle_1.selecttext(1,len(mle_1.text)) mle_1.paste()
然后如何保存为文件呢?[/quote] filewrite函数. 留意,这个函数一次只能写32K的数据,超过32K的,需要按帮助中fileread的方法循环.[/quote] 我的天,filewrite只能写32k,我32M数据就要写1024次了
kenshu 2013-09-07
  • 打赏
  • 举报
回复
引用 2 楼 tomorrower 的回复:
[quote=引用 1 楼 kenshu 的回复:] 如果要简单,放个多行编辑框在窗口中(不显示) ....copy mle_1.selecttext(1,len(mle_1.text)) mle_1.paste()
然后如何保存为文件呢?[/quote] filewrite函数. 留意,这个函数一次只能写32K的数据,超过32K的,需要按帮助中fileread的方法循环.
tomorrower 2013-09-06
  • 打赏
  • 举报
回复
引用 3 楼 eclat2299 的回复:
因資料已成功轉入ds_xls 可將ds_xls的資料直接保存 ds_xls.saveas()
问题在于:li_count = ds_xls.ImportClipboard ( 1 ) //导入数据 导入的时候,如果剪贴板的数据超过一定的行数,直接内存溢出了,winsows2003操作系统,8G内存 看来内存管理有问题
kenshu 2013-09-05
  • 打赏
  • 举报
回复
如果要简单,放个多行编辑框在窗口中(不显示) ....copy mle_1.selecttext(1,len(mle_1.text)) mle_1.paste()
tomorrower 2013-09-05
  • 打赏
  • 举报
回复
另外,li_count = ds_xls.ImportClipboard ( 1 ) //导入数据 这个剪贴板数据是否有限制的? 我在windowsXP下面正常,到windows2003上就有问题,数据拷贝后有33M
eclat2299 2013-09-05
  • 打赏
  • 举报
回复
因資料已成功轉入ds_xls 可將ds_xls的資料直接保存 ds_xls.saveas()
tomorrower 2013-09-05
  • 打赏
  • 举报
回复
引用 1 楼 kenshu 的回复:
如果要简单,放个多行编辑框在窗口中(不显示) ....copy mle_1.selecttext(1,len(mle_1.text)) mle_1.paste()
然后如何保存为文件呢?

609

社区成员

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

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