多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 數據庫 > sybase > pb9實現在兩個工作簿之間進行工作表復制

pb9實現在兩個工作簿之間進行工作表復制

來源:程序員人生   發布時間:2013-11-23 08:05:11 閱讀次數:4271次
下面的函數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的工作表時,5自學網,為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.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方法進行說明,5自學網,在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個工作表后面 
 
 
 
 
 
<div style="TOP: 1694px"><pre class="cpp" style="MARGIN: 4px 0px; BACKGROUND-COLOR: rgb(240,240,240)" name="code"><pre>  


作者 yyoinge的專欄
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日本不卡视频在线播放 | 国产亚洲精品激情都市 | 久久久久久久久一次 | 亚洲成aⅴ人片在线影院八 亚洲成aⅴ人在线观看 | 欧美freesex黑人又粗又 | xxfree性人妖hd | 精品国产一区二区三区19 | 一本天堂 | 一区二区三区在线 | 欧美亚洲综合另类成人 | 中文字幕在线看视频一区二区三区 | xxxxx做受大片视频 | 亚洲黄色视屏 | 精品国产一区二区三区香蕉沈先生 | 2022国内精品免费福利视频 | 欧美日韩精品免费一区二区三区 | 麻豆精品成人免费国产片 | 欧美乱人伦中文在线观看不卡 | 最近中文字幕大全高清在线 | 亚洲成人自拍 | 亚洲色播永久网址大全 | 免费在线播放毛片 | 国产在线播放成人免费 | 亚洲欧美偷拍另类 | 成人久久久久 | 国99久9在线 | 免费 | 欧美亚洲另类小说 | 国产成人综合网 | 国产永久一区二区三区 | 日本亚洲在线 | 日韩免费网站 | 老司机福利免费 | aa黄色| 亚洲不卡一区二区三区 | 天堂在线天堂最新版 | 另类欧美日韩 | 看亚洲色图| 大香伊蕉在人线国产75视频 | 精品一区二区三区在线观看l | 校园 春色 欧美 另类 小说 | 福利在线网站 |