輸出EXCEL檔案的通用函式,很實用 (轉)

worldblog發表於2007-12-12
輸出EXCEL檔案的通用函式,很實用 (轉)[@more@]

阿餘常要把各種各樣的查詢結果輸出到中,所以做了下面這段小,用於把一個的查詢出的結果輸出為EXCEL格式,這個程式你只要設好用於取得一個記錄集的SQL的SELECT查詢語句和一個檔名,程式就能輸出EXCEL格式檔案了,這個程式一共由三個檔案構成,第一個檔案的檔名為:toexcel.是主檔案,內容如下:

'前面是和來連結到,請自行書寫相關語句,此處略過

sql=session("toexcelsql")  '這裡是要輸出EXCEL的查詢語句,如 "SESECT * FOCAI WHERE 性別='女'"
filename="excel.xls"  ' 要輸出的EXCEL檔案的檔名, 你只要改以上兩句就行了,其它的都不要改.

'你只要修改以上兩變數就行了.其它的我都做好了.

call toexcel(FILENAME,sql)
set conn=nothing

function ReadText(FileName)  '這是一個用於讀出檔案的
 set adf=server.Create("Ado.Stream")
 with adf
 .Type=2
 .LineSeparator=10
 .Open
 .LoadFromFile (server.MapPath(FileName))
 .Charset="GB2312"
 .Position=2
 ReadText=.ReadText
 .Cancel()
 .Close()
 end with
 set ads=nothing
end function

sub SaveText(FileName,Data)  '這是一個用於寫檔案的函式
 set fs= createobject("scripting.filesystemobject")
  set ts=fs.createtextfile(server.MapPath(FileName),true)
  ts.writeline(data)
  ts.close
  set ts=nothing
  set fs=nothing
end sub

sub toexcel(filename,sql)  '這是一個根據SQL語句和FILENAME生成EXCEL檔案
  Set rs=Server.CreateObject("ADODB.RecordSet")
  rs.Open sql,conn,1,3
  TOEXCELLR="

"
  set myfield=rs.fields
  dim fieldname(50)
  for i=0 to myfield.count-1
  toexcellr=toexcellr&""
  fieldname(i)=myfield(i).name
  if myfield(i).type=135 then datename=datename&myfield(i).name&","
  next
  toexcellr=toexcellr&""
  do while not rs.eof
  toexcellr=toexcellr&""
  for i=0 to myfield.count-1
  if instr(datename,fieldname(i)&",")<>0 then
  if not isnull(rs(fieldname(i))) then
  TOEXCELLR=TOEXCELLR&""
  else
  TOEXCELLR=TOEXCELLR&""
  end if
  else
  TOEXCELLR=TOEXCELLR&""
  end if
  next
  toexcellr=toexcellr&""
  rs.movenext
  l
  toexcellr=toexcellr&"
"&MYFIELD(I).NAME&"

"&formatdatetime(rs(fieldname(i)),2)&"

 

"&rs(fieldname(i))&"
"
  tou=readtext("tou.txt")
  di=readtext("di.txt")
  toexcellr=tou&toexcellr&di
  call savetext(filename,toexcellr)
end sub
%>





正在生成EXLCE檔案


正在生成EXLCE檔案....

**************第二個檔名為:di.txt 內容如下:


 
 
 
 
 
 
 
 

************第三個檔案的檔名為:tou.TXT 內容如下:

ns:o="urn:schemas--com::office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="">








<!--[if gte mso 9]>
 
  xky
  xky
  2002-05-27T17:51:00Z
  2002-06-22T10:03:03Z
  zydn
  9.2812
 

 
 
 
 


<!--[if gte mso 9]>
 
 
 
  Sheet1
 
  225
 
 
  9
  -3
  0
 

 
 
 
  3
  24
  5
 

 

  False
  False
  False
 

 

 
  Sheet2
 
  225
  False
  False
  False
 

 

 
  Sheet3
 
  225
  False
  False
  False
 

 

 

  6600
  12000
  0
  1395
  False
  False
 

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991771/,如需轉載,請註明出處,否則將追究法律責任。

相關文章