ASP利用FSO导出到CSV文件类

6/4/2009来源:ASP技巧人气:12076

程序代码

<%
'==========================================================
'将纪录输出为(.csv)文件
'制作日期:2003年3月
'作者         :塞北的雪
'==========================================================
Class Export_CSV
   PRivate fso '文件系统对象
   private fExport
   dim Exp_Type  

   private sub Class_Initialize()
       set FSO= Server.CreateObject("Scripting.FileSystemObject")   '建立文件系统对象实例
       Exp_Type=1   '导出类型  1为追加方式写入一个文件  2为新建一个新文件再写入
   end sub
  
   '关闭对象
   private sub Class_Terminate()
       fExport.Close
       set FSO=nothing
   end sub
  
   '导出主程序(用数组指定字段)
   public Function ExportFile(fullpath,rsset, HeaderArray)
        if Exp_type=1 then
             if not ExistFile(fullpath) then
                if CreateFile(fullpath) then
                   WriteHeader HeaderArray
                   WriteBody rsSet,HeaderArray
                else
                   err_Show "创建文件时发生错误!"
                end if
             else
                
                if OpenFile(fullpath) then
                  WriteBody rsSet,HeaderArray               
                else
                  err_Show "打开文件时发生错误!"                                  
                end if
             end if
        elseif Exp_type=2 then
             if ExistFile(fullpath) then
                   err_Show "文件名冲突!"
             else
                if CreateFile(fullpath) then
                   WriteHeader HeaderArray  
                   WriteBody rsSet,HeaderArray
                else
                   err_Show "创建文件时发生错误!"                                  
                end if
             end if    
        end if
        if err=0 then
           ExportFile=true
        else
           ExportFile=false
        end if
   end function
  
   '指定的标题书写
   public sub WriteHeader( HeaderArray)
         sLine = ""
         for i=0 to ubound(HeaderArray,2)
            sLine=sLine & "," & HeaderArray(0,i)
         next
         if sLine<>"" then      
            sLine=right(sLine,len(sLine)-1)
            fExport.WriteLine(sLine)
         end if
   end sub

'记录集指定的字段信息输出
   public sub WriteBody(rsSet, HeaderArray)
     rsSet.movefirst
     Do Until rsSet.EOF
       sLine = ""
       for i=0 to ubound(HeaderArray,2)
          sLine=sLine & "," & rsSet(HeaderArray(1,i))
       next
     
       if sLine <> "" then
         sLine = right(sLine, Len(sLine)-1)
         fExport.WriteLine(sLine)
       end if
       rsSet.MoveNext
     Loop
   end sub
  
  
   '导出主程序(完全记录集)
    public Function ExportFile2(fullpath,rsSet)
        if Exp_type=1 then
             if not ExistFile(fullpath) then
                if CreateFile(fullpath) then
                   WriteHeader2 rsSet
                   WriteBody2 rsSet
                else
                   err_Show "创建文件时发生错误!"
                end if
             else
                
                if OpenFile(fullpath) then
                  WriteBody2 rsSet               
                else
                  err_Show "打开文件时发生错误!"                                  
                end if
             end if
        elseif Exp_type=2 then
             if ExistFile(fullpath) then
                   err_Show "文件名冲突!"
             else
                if CreateFile(fullpath) then
                   WriteHeader2 rsSet  
                   WriteBody2 rsSet
                else
                   err_Show "创建文件时发生错误!"                                  
                end if
             end if    
        end if
        if err=0 then
           ExportFile2=true
        else
           ExportFile2=false
        end if
   end function
  
   '以字段名为标题书写
   public sub WriteHeader2(rsSet)
         sLine = ""
         for i=0 to rsSet.fields.count-1
            sLine=sLine & "," & rsSet.fields(i).name
         next
         if sLine<>"" then      
            sLine=right(sLine,len(sLine)-1)
            fExport.WriteLine(sLine)
         end if
   end sub

'输出记录集中信息
   public sub WriteBody2(rsSet)
     rsSet.movefirst
     Do Until rsSet.EOF
       sLine = ""
       for i=0 to rsSet.fields.count-1
          sLine=sLine & "," & rsSet.fields(i).value
       next
     
       if sLine <> "" then
         sLine = right(sLine, Len(sLine)-1)
         fExport.WriteLine(sLine)
       end if
       rsSet.MoveNext
     Loop
   end sub
  
   '输出错误信息
   private sub Err_Show(errDesc)
      Response.Write errDesc
      Response.End
   end sub
  
   '创建一个文件
   public Function CreateFile(fullpath)
        Set fExport = FSO.CreateTextFile(FullPath, false)
        if err=0 then
           CreateFile=true
        else
           CreateFile=false
        end if
   end function
  
   '打开一个文件
   public Function OpenFile(fullpath)
            set fExport=FSO.OpenTextFile(fullPath,8,false)
            if err=0 then
               OpenFile=true
            else
              OpenFile=false
            end if
   end function
  
  
   '判断指定文件名的文件是否存在
   public function ExistFile(fullpath)
       if FSO.FileExists(fullpath) then
           ExistFile=true
       else
           ExistFile=false
       end if 
   end function
     
end Class
%>