设为首页 加入收藏

TOP

pb9实现在两个工作簿之间进行工作表复制(二)
2014-11-23 22:54:09 来源: 作者: 【 】 浏览:20
Tags:pb9 现在 两个 工作 之间 进行 复制
.disconnectobject();
destroy ole_object_s;
return false


end function

其中用到的一个路径分割函数of_splitpath如下:

public function string of_splitpath (string as, integer ai);//==========================================================
// 分割文件名
// ai: 1返回路径,2返回文件名(带后缀名),32返回文件名(不带后缀名)
//==========================================================
// 作者:yyoinge 2011-10-12 18:00
//==========================================================

choose case ai
case 1
if posw(as, '.') = 0 then return as
return leftw(as,lenw(as) - posw(reverse(as), '\') + 1)
case 2
if posw(as, '\') = 0 then return as
return rightw(as,posw(reverse(as), '\') - 1)
case 3
if posw(as, '\') > 0 then as = rightw(as,posw(reverse(as), '\') - 1)
return leftw(as, lastpos(as, '.') - 1)
case else
return as
end choose
end function

pb复制excel工作表的功能,可以帮助我们实现:将1个数据窗口导出到1个excel工作簿的多个工作表sheet中。实现的步骤大致如下:
(1)将datawindow的数据,按照平均行数(每个sheet中需要保存的行数),依次复制到临时的datastore中。如:将1个有10行数据的datawindow,导出为每个sheet包含3行数据的多sheet工作簿,则需要依次将1-3行、4-6行、7-9行、10至10行分别复制到临时的datastore中。
(2)然后将datastore中的数据saveas导出为单个单sheet的excel文件。
(3)将第2次开始导出的excel文件(也就是上述例子中的4-6行开始的excel文件),依次合并到第1次导出的excel文件(1-3行)中,并删除导出的excel文件(1-3行对应的文件暂时不删除)。
(4)待所有数据都导出,并复制到第1次导出的excel文件后,将第1次导出的excel文件改名并复制目标导出路径上,然后删除第1次导出的excel文件。

具体 源码可以参照PB9将数据窗口导出到一个EXCEL文件的多个工作表中 。
该源码使用的是从后到前的导出方法,也就是先导出10-10行,然后导出7-9行。。。最后导出1-3行,因为在该源码中,复制工作表时使用的方法是:

ole_object_s.workbooks(filename_s).Sheets(sheetname_s).copy(ole_object_s.workbooks(filename_t).Sheets(1) //将源工作表复制到目标工作簿的第1个工作表前面

而上述函数复制工作表的方法为:

int li
setnull(li)
ole_object_s.workbooks(filename_s).Sheets(sheetname_s).copy(li, ole_object_s.workbooks(filename_t).Sheets(long(ole_object_s.workbooks(filename_t).Sheets.count))) //将源工作表复制到目标工作簿的最后1个工作表后面

这边需要对copy方法进行说明,在VBA中,工作表复制的写法为:

Sheets("工作表名称").Copy Before := Sheets(1) //将工作表“工作表名称”复制到第1个工作表前面
Sheets("工作表名称").Copy After := Sheets(1) //将工作表“工作表名称”复制到第1个工作表后面


而在pb中对应的写法为:

int li setnull(li)
Sheets("工作表名称").Copy(Sheets(1), li) //将工作表“工作表名称”复制到第1个工作表前面
Sheets("工作表名称").Copy(li, Sheets(1)) //将工作表“工作表名称”复制到第1个工作表后面





  
 


作者 yyoinge的专栏
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇PB9写的一个拆解SQL语句的通用函数 下一篇与MSSQL的dateadd函数功能一致的p..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: