ASP操作Excel技術總結:十一的部落:Xuite日誌
  • 搜尋文章
  • 關鍵字
  • yan.kee
  • 文章分類
  • 最愛連結
  • 我的發燒文
  • 累積 | 今日
    loading......
  • 參觀人氣統計
  • 誰拜訪過我
  • BLOG玩意兒
  • 最新文章
  • 最新回應
  • Re:[作品] 摳叮幫幫忙,by(11)於2008-07-21
    Re:只能在執行 Render() 的過程中調用 RegisterForEventValidation,by(11)於2008-07-03
    Re:[轉]自動清除7天以上的檔案 ,by(haoming)於2008-06-13
    Re:[kuso]尿布舞,by(11)於2008-05-18
    Re:[kuso]尿布舞,by(seth)於2008-05-18
    Re:C#中產生GUID,by(yankee)於2008-02-17
    Re:C#中產生GUID,by(jimmy)於2008-02-16
    Re:開發excel 問題討論串,by(11)於2008-02-02
    Re:Connection Strings 討論串,by(11)於2008-01-27
    Re:SQL 分頁,by(11)於2008-01-25
  • 活動
  • 到台灣玩不帶走一張發票
    ===訪客來自===
    Locations of visitors to this page
  • 日誌使用資源






  • 如何使用RSS
    Powered by Xuite
  • 最新引用
  • 沒有新引用
  • 最愛日誌
  • 2008-07-16 10:58 ASP操作Excel技術總結
  • ?
  • ASP
  • 好文轉寄
  • 平均分數:0 顆星    投票人數:0
    我要評分:
    標籤 : 


    目錄
    一、 環境配置
    二、 ASP對Excel的基本操作
    三、 ASP操作Excel產生資料表
    四、 ASP操作Excel產生Chart圖
    五、 伺服器端Excel檔案瀏覽、下載、刪除方案
    六、 附錄

    正文
    一、 環境配置
    伺服器端的環境配置從參考資料上看,微軟系列的配置應該都行,即:
    1.Win9x+PWS+Office
    2.Win2000 Professional+PWS+Office
    3.Win2000 Server+IIS+Office
    目前筆者測試成功的環境是後二者。Office的版本沒有特殊要求,考慮到客戶機配置的不確定性和下兼容特性,建議伺服器端Office版本不要太高,以防止客戶機下載後無法正確顯示。
    伺服器端環境配置還有兩個偶然的發現是:
    1. 筆者開發機器上原來裝有金山的WPS2002,結果Excel物件建立始終出現問題,卸載WPS2002後,錯誤消失。
    2. 筆者開發ASP程式碼喜歡用FrontPage,結果發現如果FrontPage打開(伺服器端),物件建立出現不穩定現象,時而成功時而不成功。擴展考察後發現,Office系列的軟體如果在伺服器端運行,則Excel對象的建立很難成功。
    伺服器端還必須要設定的一點是COM組件的操作權限。在命令行鍵入「DCOMCNFG」,則進入COM組件配置界面,選擇Microsoft Excel後點選屬性按鈕,將三個單選項一律選擇自定義,編輯中將Everyone加入所有權限。儲存完畢後重新啟動伺服器。
    客戶端的環境配置沒發現什麼特別講究的地方,只要裝有Office和IE即可,版本通用的好像都可以。

    1.建立Excel物件

    set objExcelApp = CreateObject("Excel.Application")
    objExcelApp.DisplayAlerts = false  不顯示警告
    objExcelApp.Application.Visible = false  不顯示界面

    2、 新建Excel檔案
    objExcelApp.WorkBooks.add
    set objExcelBook = objExcelApp.ActiveWorkBook
    set objExcelSheets = objExcelBook.Worksheets
    set objExcelSheet = objExcelBook.Sheets(1)
    3、 讀取已有Excel檔案
    strAddr = Server.MapPath(".")
    objExcelApp.WorkBooks.Open(strAddr & "\Templet\Table.xls")
    set objExcelBook = objExcelApp.ActiveWorkBook
    set objExcelSheets = objExcelBook.Worksheets
    set objExcelSheet = objExcelBook.Sheets(1)
    4、 另存Excel檔案
    objExcelBook.SaveAs strAddr & "\Temp\Table.xls"
    5、 儲存Excel檔案

    objExcelBook.Save  (筆者測試時儲存成功,頁面報錯。)
    6.退出Excel操作
    objExcelApp.Quit 一定要退出
    set objExcelApp = Nothing
    ASP操作Excel產生資料表
    1、 在一個範圍內插入資料
    objExcelSheet.Range("B3:k3").Value = Array("67", "87", "5", "9", "7", "45", "45", "54", "54", "10")
     在一個單元格內插入資料
    objExcelSheet.Cells(3,1).Value="Internet Explorer"
    3、 選中一個範圍
    4、 單元格左邊畫粗線條
    5、 單元格右邊畫粗線條
    6、 單元格上邊畫粗線條
    7、 單元格下邊畫粗線條
    8、 單元格設定背景色
    9、 合併單元格
    10、 插入行
    11、 插入列

    四、 ASP操作Excel產生Chart圖
    1、 建立Chart圖
    objExcelApp.Charts.Add
    2、 設定Chart圖種類
    objExcelApp.ActiveChart.ChartType = 97
    註:二維折線圖,4;二維餅圖,5;二維柱形圖,51
    3、 設定Chart圖示題

    <br>objExcelApp.ActiveChart.HasTitle = True<br>objExcelApp.ActiveChart.ChartTitle.Text = "A test Chart"<br>
    通過表格資料設定圖形
    <br>objExcelApp.ActiveChart.SetSourceData objExcelSheet.Range("A1:k5"),1<br>
     直接設定圖形資料(推薦)
    <br>objExcelApp.ActiveChart.SeriesCollection.NewSeries<br>objExcelApp.ActiveChart.SeriesCollection(1).Name = "=""333"""<br>objExcelApp.ActiveChart.SeriesCollection(1).Values = "={1,4,5,6,2}"<br>
     綁定Chart圖

    <br>objExcelApp.ActiveChart.Location 1<br>
     顯示資料表
    <br>objExcelApp.ActiveChart.HasDataTable = True<br>
     顯示圖例
    <br>objExcelApp.ActiveChart.DataTable.ShowLegendKey = True<br>
    五、 伺服器端Excel檔案瀏覽、下載、刪除方案
    瀏覽的解決方法很多,「Location.href=」,「Navigate」,「Response.Redirect」都可以實現,建議用客戶端的方法,原因是給伺服器更多的時間產生Excel檔案。
    下載的實現要麻煩一些。用網上現成的伺服器端下載組件或自己自訂開發一個組件是比較好的方案。另外一種方法是在客戶端操作Excel組件,由客戶端操作伺服器端Excel檔案另存至客戶端。這種方法要求客戶端開放不安全ActiveX元件的操作權限,考慮到通知每個客戶將伺服器設定為可信站點的麻煩程度建議還是用第一個方法比較省事。
    刪除方案由三部分組成:
    A: 同一使用者產生的Excel檔案用同一個檔案名,檔案名可用使用者ID號或SessionID號等可確信不重複字串組成。這樣新檔案產生時自動覆蓋上一檔案。
    B: 在Global.asa檔案中設定Session_onEnd事件激發時,刪除這個使用者的Excel暫存檔案。
    C: 在Global.asa檔案中設定Application_onStart事件激發時,刪除暫存目錄下的所有檔案。
    註:建議目錄結構 \Src 程式碼目錄 \Templet 樣板目錄 \Temp 暫存目錄

    六、 附錄
    出錯時Excel出現的死進程出現是一件很頭疼的事情。在每個檔案前加上「On Error Resume Next」將有助於改善這種情況,因為它會不管檔案是否產生錯誤都堅持執行到「Application.Quit」,保證每次程式執行完不留下死進程。

    補充兩點:
    1、其他Excel實際操作可以通過錄製宏來解決。
    2、伺服器端打開SQL企業管理器也會產生問題。

    將網頁中表格,儲存的方法
    <br>TABLE 的 ID=MYTABLE<br><!--產生EXCEL檔案--><br>sub btnExport_onclick()<br>dim objExcel<br>on error resume next <br>Set objExcel = CreateObject("excel.application")<br>   With objExcel <br>    .visible =true<br>    .workbooks.add<br>    .sheets("sheet1").select<br>    <br>   End with<br>   m_row="0"<br>      <br>    for a=0 to document.all.mytable.rows.length-1<br>    m_row = cstr(int (m_row)+1)<br>    for b=0 to document.all.mytable.rows(a).cells.length-1<br>    m_col = chr(asc("A")+b)<br>    objexcel.range(m_col&m_row).select<br>    M_value = document.all.mytable.rows(a).cells(b).innerText<br>      objexcel.activecell.value=cstr(m_value)<br>     next <br>    next <br>   objexcel.visible=true<br>   objexcel.range("A1").select<br>End sub<br>



    yan.kee / Xuite日誌 / 回應(0) / 引用(0) / 好文轉寄
  • 回應