06畢業設計 VB匯出Excel文件

2021-07-30 16:15:46 字數 3651 閱讀 1304

private sub xlsout1_click()         '匯出excel文件

if rs1.recordcount < 1 then

msgbox "匯出失敗,當前列表中沒有記錄!"

outstate1.visible = false

exit sub

end if

on error goto not_installexcel '當電腦沒裝excel軟體時的出錯處理

if msgbox(chr(13) + "是否將當前列表中的資料匯出為excel資料?  ", vbquestion + vbyesno) = vbno then exit sub

dim irow, icol as integer

dim irowcount, icolcount as integer

dim fieldlen() '存字段長度值

dim xlbook as excel.workbook

dim xlsheet as excel.worksheet

main.enabled = false

outstate1.visible = true '顯示匯出狀態

outstate1.caption = "正在匯出,請稍後..."

set xlsheet = xlbook.worksheets(1)

with rs1

.movelast

irowcount = .recordcount '記錄總數

icolcount = .fields.count '字段總數

redim fieldlen(icolcount)

.movefirst

'寫入標頭

xlsheet.rows(1).rowheight = 35

xlsheet.range(xlsheet.cells(1, 1), xlsheet.cells(1, rs1.fields.count)).mergecells = true

xlsheet.cells(1, 1).font.size = 14

xlsheet.cells(1, 1).font.bold = true

if usetype = "系統管理員" then

xlsheet.cells(1, 1).value = "課時津貼明細列表"

else

xlsheet.cells(1, 1).value = usepart & "課時津貼明細列表"

end if

'寫入記錄

for irow = 2 to irowcount + 2

for icol = 1 to icolcount

select case irow

case 2 '在excel中的第一行加標題

xlsheet.cells(irow, icol).value = .fields(icol - 1).name

case 3 '將陣列fieldlen()存為第一條記錄的字段長

if isnull(.fields(icol - 1)) = true then

fieldlen(icol) = lenb(.fields(icol - 1).name) '如果字段值為null,則將陣列filelen(icol)的值設為標題名的寬度

else

fieldlen(icol) = lenb(.fields(icol - 1))

end if

if fieldlen(icol) < lenb(.fields(icol - 1).name) then '如果字段值的長度小於標題名的寬度,則將陣列filelen(icol)的值設為標題名的寬度

fieldlen(icol) = lenb(.fields(icol - 1).name)

end if

xlsheet.columns(icol).columnwidth = fieldlen(icol)  'excel列寬等於字段長

xlsheet.cells(irow, icol).value = .fields(icol - 1) '向excel的cells中寫入字段值

case else

fieldlen1 = lenb(.fields(icol - 1))

if fieldlen(icol) < fieldlen1 then

xlsheet.columns(icol).columnwidth = fieldlen1 '**列寬等於較長字段長

fieldlen(icol) = fieldlen1 '陣列fieldlen(icol)中存放最大字段長度值

else

xlsheet.columns(icol).columnwidth = fieldlen(icol)

end if

xlsheet.cells(irow, icol).value = .fields(icol - 1)

end select

doevents

next icol

if irow > 2 then

if not .eof then .movenext

end if

doevents

outstate1.caption = "正在匯出,完成: " + cstr(int(100 * (irow - 2) / irowcount)) + "%" '顯示匯出進度

next irow

'新增年月日

xlsheet.cells(irowcount + 3, icolcount).value = format$(now, "yyyy年mm月dd日") '在最後一行後加是年月日

xlsheet.range(xlsheet.cells(irowcount + 3, 1), xlsheet.cells(irowcount + 3, icolcount)).mergecells = true '合併年月日所在的行

xlsheet.cells(irowcount + 3, 1).horizontalalignment = xlhalignright '設定為右對齊

with xlsheet

.range(.cells(2, 1), .cells(2, icol - 1)).font.bold = true  '標題字型加粗

.range(.cells(1, 1), .cells(irow, icol - 1)).borders.linestyle = xlcontinuous   '設**邊框樣式

.columns("a:i").verticalalignment = xlvaligncenter  '垂直居中

.range(.cells(1, 1), .cells(irow - 1, icol - 1)).horizontalalignment = xlhaligncenter   '水平居中對齊

end with

.movefirst

end with

outstate1.visible = false

main.enabled = true

exit sub

not_installexcel:  '當電腦沒有裝excel軟體時的處理

msgbox "匯出錯誤!請檢查電腦是否裝有不低於excel2000版本的excel軟體!" & chr(13) & chr(10) & "然後檢查一下出錯處的記錄是否有問題!"

outstate1.visible = false

main.enabled = true

end sub

畢業設計!畢業設計!!畢業設計!!!

看到ceocio的帖子 嚇人哦 深有體會。進幾年有些本科學生的程式與 實在不象話。有的組的答辯問題簡直成了挑錯字,平均每頁都有錯字。有的組在資料庫設計時,姓名 身份證號 手機號 日期全部都用char 10 答辯時還振振有辭,說在做測試時僅僅輸入了些簡單的數字做測試,所以沒有發現問題!還有的學生 是這...

製作畢業設計

1.本工作室有豐富的 asp 和 asp.net開發經驗,歡迎廣大2008屆畢業生朋友前來諮詢.2.注意 本工作室只做設計,不做 但是我會將設計的要點難點和設計思路用word寫出來,這樣保證畢業生朋友能明白我的設計思想.確保答辨過關,當然必要時可以指導畢業生進行 的寫作.3.定做乙個畢業設計的 一般...

畢業設計(四)

畢業設計 四 一如既往,先說說兩天來的感悟吧 1.如果以前我說xml是個好東西,都是人家告訴我的,今天我終於在設計 的時候在xml上收到巨大的好處啊 只要把網頁做成乙個個小的xml直譯器,就可以把資源整合到最大的程度,同時也分離到最大的程度 以後一切的修改更新盡在xml中,真是perfect之至阿 ...