ASP向Excel導資料(圖片)終結版 ASP操作Excel

來源:互聯網
上載者:User

相信有很多人有用程式向Excel導資料的需求, 且做過. 一般匯出一些文本資料是很方便的, 可選方法很多, 比如拼接文本字串存.cvs格式(以逗號與斷行符號符分隔資料,預設用Excel開啟), 比如把xls檔案當成資料用SQL來操作 等等. 當需要匯出圖片資料的時候該怎麼辦? 這就需要使用Excel.Application對象.

實際上用Excel.Application可以做到OfficeExcel軟體所能做到的全部操作, 功能相當強大. 但我們每個人學習精力有限, 不可能每個都對它很熟悉. 於是乎, 我選用了大量的關鍵詞在百度與Google上搜尋, 希望能得到一些有價值的東西. 但找來找去, 沒發現一篇是完整版, 大多數是詢問的, 而且代碼中包含諸多的明顯錯誤與功能上的缺性. 值得批評的是, 大量網站直接複製他人網站文章, 而且還是劣質文章. 誒, 不找也罷! 佛曰 我不下地獄誰下地獄, 於是我給大家把這個工作給做了.

我首先找了個VBA的手冊合集, 還好它是chm格式. 開啟其中的Vbaexcelxl10.chm, 嗯, 不錯不錯, 確實是一個不錯的手冊, 但是, 它不是一個教程, 欲哭無淚… 沒辦法, 只好硬頭皮看下去. 手冊畢竟是手冊, 不會一把些細節上的便捷操作提出來, 也不會把各部分內容的邏輯關聯講得很完整. 經過我仔細的分析, 大膽的預測, 周密的思考, 大量的實驗, 上刀山,下火鍋, 不對,是火海, 好不容易才把它完美的實現了. 現在, 又把它連夜傳到Web630.Net上, 僅僅只是希望大家記住這個網站, 同時希望各技術站多點原創文章, 為中國的程式業發展做點貢獻. 複製代碼 代碼如下:<%
Rem 初始化ExcelApplication的工作環境
Dim ExcelApp,eBook,eSheet
Set ExcelApp = CreateObject(”Excel.Application”) ‘建立Excel對象
ExcelApp.DisplayAlerts=false ‘不顯示警告
ExcelApp.Application.Visible=false ‘不顯示介面

Rem 初始化Excel資料
‘ExcelApp.Workbooks.Open(Server.MapPath(”zzz.xls”)) ‘開啟Excel工作本,可替換下面一行
Set eBook=ExcelApp.Workbooks.Add ‘建立Excel工作本
Set eBook=ExcelApp.Workbooks(1) ‘引用第一個工作本
set eSheet = eBook.Worksheets(1) ‘引用第一個工作表

Rem 資料匯入
Dim i,img
i = 1
For i=1 To 5
eSheet.Cells(i,1).Value=”欄位一”&i
eSheet.Cells(i,2).Value=”欄位二”&i
eSheet.Cells(i,3).Value=”欄位三”&i
eSheet.Cells(i,4).Select ‘選擇第i行第4個單元儲存格
Set img=eSheet.Pictures.Insert(Server.MapPath(”people.jpg”)) ‘在上述位置插入圖片,並得到圖片的引用
img.Top=img.Top+2 ‘調整圖片位置,下同, 否則它會壓住表格邊線
img.Left=img.Left+2 ‘單位是磅
eSheet.Rows(i).RowHeight=img.Height+4 ‘調整當前行的高度,讓它自動與圖片高度相同
Next

Rem 儲存上述所做的工作
‘eBook.Save ‘如果是開啟已經存在的Excel檔案,則可選用這行來代替下面一行
eBook.SaveAs Server.MapPath(”zzz.xls”)
Set eSheet=Nothing
Set eBook=Nothing
‘ExcelApp.Quit ‘一定要退出, 否則Excel的進程留在作業系統中.
set ExcelApp = Nothing
%>

ASP向Exce讀取或寫入資料時, 比較簡潔的一種方法是把Excel當作資料庫使用SQL語句來操作. 網上很多地方都有相關的文章, 本文僅作為《ASP向Excel導資料(圖片)終結版》的輔助資料給大家參考. 複製代碼 代碼如下:<%
Dim conn,rs,sql
Sub DBOpen()
Dim db : db=Server.MapPath(”zzz.xls”)
Set conn=Server.CreateObject(”Adodb.Connection”)
On Error Resume Next
conn.Open “Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=”"Excel 8.0;HDR=YES”";Data Source=” & db
Rem HDR 預設為YES,表示第一行作為欄位名, 否則視它為內容
Rem 對於Excel2007,而應為: “Provider=Microsoft.ACE.OLEDB.12.0; Extended Properties=Excel 12.0;Data Source=xxx.xlsx;”
If Err.Number<>0 then
Err.Clear
Response.Write(”<h1>The Database link is ERROR</h1>”)
Response.End()
End If
On Error GoTo 0
End Sub
Sub DBClose()
If IsNotBlank(conn) Then
conn.Close()
Set conn=Nothing
End If
End Sub
Function IsNotBlank(ByRef TempVar)
IsBlank = True
Select Case VarType(TempVar)
Case 0,1 ‘Empty & Null
IsBlank = False
Case 9 ‘Object
If TypeName(TempVar) = “Nothing” Or TypeName(TempVar) = “Empty” Then
IsBlank = False
End If
End Select
End Function

Call DBOpen()
sql=”SELECT * FROM [Sheet1$]” ‘注意表名的寫法, 需要在工作表名的後面加符號$
Set rs=conn.Execute(sql)
While Not rs.Eof
Response.Write(rs(0)&”, “)
Response.Write(rs(1)&”, “)
Response.Write(rs(2)&”<br />”&VbCrLf)
rs.Movenext
Wend
rs.Close : Set rs=Nothing
Call DBClose()
%>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.