设为首页 加入收藏

TOP

pb9实现在两个工作簿之间进行工作表复制(一)
2014-11-23 22:54:09 来源: 作者: 【 】 浏览:21
Tags:pb9 现在 两个 工作 之间 进行 复制
下面的函数f_excel_hb,可以实现“将工作簿filename_s中的工作表sheetname_s以新的工作表名称sheetname_t,复制到工作簿filename_t的最后”



public function boolean f_excel_hb (string filename_s, string filename_t, string sheetname_s, string sheetname_t);
//==========================================================
// 合并两个工作簿中的某个工作表
//==========================================================
// 作者:yyoinge 2011-10-12 18:00
//==========================================================
// 将工作簿filename_s中的工作表sheetname_s以新的
// 工作表名称sheetname_t,复制到工作簿filename_t的最后
//==========================================================
if not fileexists(filename_s) then
messagebox('','工作簿【' + filename_s + '】(源)不存在')
return false
end if
if not fileexists(filename_t) then
messagebox('','工作簿【' + filename_t + '】(目标)不存在')
return false
end if
long ll_val
//声明ole对象
oleobject ole_object_s
//创建ole对象
ole_object_s=create oleobject
//连接到excel
ll_val = ole_object_s.connecttonewobject("excel.application")
if ll_val <> 0 then
messagebox('','ole无法连接Excel!')
goto error
end if
//打开源和目标工作簿
ole_object_s.workbooks.open(filename_s)
ole_object_s.workbooks.open(filename_t)
string ls_t
ls_t = filename_t
filename_s = of_splitpath(filename_s, 2)
filename_t = of_splitpath(filename_t, 2)
//隐藏excel
ole_object_s.visible = false
ole_object_s.displayalerts = false
int n,t
int li
boolean isexists=false
oleobject lworksheet
//判断源工作簿中的工作表是否存在
try
lworksheet = ole_object_s.Workbooks(filename_s).sheets(sheetname_s)
isexists = true
catch( oleruntimeerror er)
isexists = false
end try
if isexists=false then
messagebox('','工作簿【' + filename_s + '】中工作表不存在工作表[' + sheetname_s + ']')
goto error
end if
//当目标工作簿中存在sheet名为sheetname_t的工作表时,为sheetname_t增加后缀(1),然后再重复进行判断,直到表名不存在
isexists = true
do while isexists
try
lworksheet = ole_object_s.Workbooks(filename_t).sheets(sheetname_t)
isexists = true
sheetname_t += '(1)'
catch( oleruntimeerror er1)
isexists = false
end try
loop
//进行工作表合并(移到目标工作簿的最后)
//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)))
//重命名工作表
ole_object_s.workbooks(filename_t).sheets(long(ole_object_s.workbooks(filename_t).Sheets.count)).name = sheetname_t
//保存目标工作簿
isexists = true
//ole_object_s.visible = true
//ole_object_s.displayalerts = true
//messagebox('', '')
try
ole_object_s.workbooks(filename_t).save()
catch( oleruntimeerror er2)
messagebox('提示', '无法保存工作簿【' + filename_t + '】')
isexists = false
end try
if not isexists then goto error
//关闭工作簿
ole_object_s.workbooks(filename_s).close
ole_object_s.workbooks(filename_t).close
//退出excel
ole_object_s.workbooks.close
ole_object_s.Application.quit();
//断开连接
ole_object_s.disconnectobject();
//注销ole对象
destroy ole_object_s;
return true
error:
ole_object_s.workbooks(filename_s).close
ole_object_s.workbooks(filename_t).close
ole_object_s.workbooks.close
ole_object_s.Application.quit();
ole_object_s
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇PB9写的一个拆解SQL语句的通用函数 下一篇与MSSQL的dateadd函数功能一致的p..

评论

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