2011年4月21日 星期四

[ASP]如何於SERVER端保留EXCEL

在開發時,遇到需要在Client 端匯出excel同時在Server端也保留相同一份檔案
在asp中,沒有能直接產生,所以試出了以下列方式處理可以解決。
主要是以下列指令去實作
CreateObject("Scripting.FileSystemObject")   '呼叫CreateObject 執行FileSystemObject

Server.MapPath("..\DMSMainManage\Repair_Card_ExcelLog") & "\" & Trim(rsErrorList1.MoveFirst("myGUID")) &".xls"     '設定儲存路徑,此例為儲存excel,如想存成其他格式可自行設定,將.xls改為txt、csv…等

opentextfile(logfile,ForWriting, true) '設定是否能覆寫 ture為可以

write(styleString) & vbcrlf   '用write寫入檔案中,在寫入時是以文字方式,此例因要寫成excel,所以要參雜一些html語法,讓excel看起來和網頁上看的一樣。
以此例來說,是用個文字參數去接所組出來的HTML,最後再write出來即可。
這樣就能達到在於server端產生excel並將想要的資料匯入。


/------------------------------------------------程式開始------------------------------------------/
    if objConn.nRet=0 and not rsErrorList1 is nothing then
        while not rsErrorList1.EOF
  StringTableHead = StringTableHead & "<tr align=center valign=middle height=20>"&_
   "<td class=TdStyle align=center valign=middle>&nbsp;"&Trim(rsErrorList1("CallID")) &"</td>"&_
   "<td class=TdStyle align=left valign=middle>&nbsp;"&Trim(rsErrorList1("CreatorName")) &"</td>"&_
   "<td class=TdStyle align=left valign=middle>&nbsp;"&Trim(rsErrorList1("BranchDesc")) &"</td>"&_
   "<td class=TdStyle align=left valign=middle>&nbsp;"&Trim(rsErrorList1("PlaceDesc")) &"</td>"&_
   "<td class=TdStyle align=center valign=middle>&nbsp;"&Trim(rsErrorList1("MCNO")) &"</td>"&_
   "<td class=TdStyle align=center valign=middle>&nbsp;"&Trim(rsErrorList1("Brand")) &"</td>"&_
   "<td class=TdStyle align=left valign=middle>&nbsp;"&Trim(rsErrorList1("MaintainName")) &"</td>"&_
   "<td class=TdStyle align=left valign=middle>&nbsp;"&Trim(rsErrorList1("MainDesc")) &"</td>"&_
   "<td class=TdStyle align=left valign=middle>&nbsp;"&Trim(rsErrorList1("ReservationDateTime")) &"</td>"&_
   "<td class=TdStyle align=left valign=middle>&nbsp;"&Trim(rsErrorList1("LoseCardDate")) &"</td>"&_
   "<td class=TdStyle align=left valign=middle>&nbsp;"&Trim(rsErrorList1("CustomerName")) &"</td>"&_
   "<td class=TdStyle align=left valign=middle>&nbsp;"&Trim(rsErrorList1("hidCustomerID")) &"</td>"&_
   "<td class=TdStyle align=left valign=middle>&nbsp;"&Trim(rsErrorList1("CustomerTel1")) &"</td>"&_
   "<td class=TdStyle align=left valign=middle>&nbsp;"&Trim(rsErrorList1("CustomerTel2")) &"</td>"&_
   "<td class=TdStyle align=left valign=middle>&nbsp;"&Trim(rsErrorList1("BankName")) &"</td>"&_
   "<td class=TdStyle align=left valign=middle>&nbsp;"&Trim(rsErrorList1("hidCreditCard")) &"</td>"&_
   "<td class=TdStyle align=left valign=middle>&nbsp;"&Trim(rsErrorList1("hidBankAccount")) &"</td>"&_
   "<td class=TdStyle align=left valign=middle>&nbsp;"&Trim(rsErrorList1("GetCardDate")) &"</td>"&_
   "<td class=TdStyle align=left valign=middle>&nbsp;"&Trim(rsErrorList1("OtherCard")) &"</td>"&_  
   "<td class=TdStyle align=left valign=middle>&nbsp;"&Trim(rsErrorList1("NoticeUser")) &"</td>"&_
   "<td class=TdStyle align=left valign=middle>&nbsp;"&Trim(rsErrorList1("Memo")) &"</td>"&_ 
   "<td class=TdStyle align=center valign=middle colspan=2>"
   
     set rsDetail1 = objConn.GetHistoryErrorListCard_Detail(rsErrorList1("CallID"))
      if objConn.nRet=0 and not rsDetail1 is nothing then
       dim i
       i = 0
          StringTableHead = StringTableHead & "<table border='0' cellspacing='0' cellpadding='0' align='center' width=100% height=100>"
        while not rsDetail1.EOF
         i = i + 1
         StringTableHead = StringTableHead & "<tr align=center valign=middle height=20>"&_
         "<td class=TdStyle align=center valign=middle width=100>&nbsp;"&Trim(rsDetail1("ProcessDateTime"))&"</td>"&_
         "<td class=TdStyle align=left valign=middle width=100>&nbsp;"&Trim(rsDetail1("Content"))&"</td>"&_
        "</tr>"  
         rsDetail1.MoveNext
        wend
      StringTableHead = StringTableHead & "</table>"
      end if
    StringTableHead = StringTableHead & "</td> "&_ 
    "<td class=TdStyle align=center valign=middle>&nbsp;"&Trim(rsErrorList1("SecurityArriveDate"))&"</td>"&_
    "<td class=TdStyle align=center valign=middle>&nbsp;"&Trim(rsErrorList1("SecurityLeaveDate"))&"</td>"&_
    "<td class=TdStyle align=left valign=middle>&nbsp;"&Trim(rsErrorList1("CloseTypeIDDesc"))&"</td>"&_
    "<td class=TdStyle align=left valign=middle>&nbsp;"&Trim(rsErrorList1("CloserName"))&"</td>"&_
    "<td class=TdStyle align=center valign=middle>&nbsp;"&Trim(rsErrorList1("CardCertificateDate1"))&"</td>"&_
    "<td class=TdStyle align=center valign=middle>&nbsp;"&Trim(rsErrorList1("CardCertificateDate2"))&"</td>"&_
    "<td class=TdStyle align=center valign=middle>&nbsp;"&Trim(rsErrorList1("ISReturnDesc"))&"</td>"&_
    "<td class=TdStyle align=left valign=middle>&nbsp;"&Trim(rsErrorList1("AccessName"))&"</td>"&_
    "<td class=TdStyle align=center valign=middle>&nbsp;"&Trim(rsErrorList1("CardCertificateCheckDesc"))&"</td>"&_
    "<td class=TdStyle align=left valign=middle>&nbsp;"&Trim(rsErrorList1("CheckName"))&"</td>"&_
   "</tr>"
        rsErrorList1.MoveNext
        wend
 end if
    StringTableHead = StringTableHead & "</table>"
 
    '於SERVER 端產生檔案物件
    Set oExcel = CreateObject("Scripting.FileSystemObject")
    logfile = Server.MapPath("..\DMSMainManage\Repair_Card_ExcelLog") & "\" & Trim(rsErrorList1.MoveFirst("myGUID")) &".xls"    
    ForWriting = 2
    Set f = oExcel.opentextfile(logfile,ForWriting, true)
   
    f.write(styleString) & vbcrlf 
    f.write(StringTableHead) & vbcrlf
    f.close
 set f = nothing
 set oExcel = nothing