ASP向Excel導(dǎo)數(shù)據(jù)(圖片)終結(jié)版 ASP操作Excel
更新時間:2009年11月11日 19:50:19 作者:
ASP向Excel導(dǎo)數(shù)據(jù)(圖片)終結(jié)版 ASP操作Excel,需要的朋友可以參考下。
相信有很多人有用程序向Excel導(dǎo)數(shù)據(jù)的需求, 且做過. 一般導(dǎo)出一些文本數(shù)據(jù)是很方便的, 可選方法很多, 比如拼接文本字符串存.cvs格式(以逗號與回車符分隔數(shù)據(jù),默認(rèn)用Excel打開), 比如把xls文件當(dāng)成數(shù)據(jù)用SQL來操作 等等. 當(dāng)需要導(dǎo)出圖片數(shù)據(jù)的時候該怎么辦? 這就需要使用Excel.Application對象.
實際上用Excel.Application可以做到OfficeExcel軟件所能做到的全部操作, 功能相當(dāng)強(qiáng)大. 但我們每個人學(xué)習(xí)精力有限, 不可能每個都對它很熟悉. 于是乎, 我選用了大量的關(guān)鍵詞在百度與Google上搜索, 希望能得到一些有價值的東西. 但找來找去, 沒發(fā)現(xiàn)一篇是完整版, 大多數(shù)是詢問的, 而且代碼中包含諸多的明顯錯誤與功能上的缺性. 值得批評的是, 大量站點(diǎn)直接復(fù)制他人站點(diǎn)文章, 而且還是劣質(zhì)文章. 誒, 不找也罷! 佛曰 我不下地獄誰下地獄, 于是我給大家把這個工作給做了.
我首先找了個VBA的手冊合集, 還好它是chm格式. 打開其中的Vbaexcelxl10.chm, 嗯, 不錯不錯, 確實是一個不錯的手冊, 但是, 它不是一個教程, 欲哭無淚… 沒辦法, 只好硬頭皮看下去. 手冊畢竟是手冊, 不會一把些細(xì)節(jié)上的便捷操作提出來, 也不會把各部分內(nèi)容的邏輯關(guān)聯(lián)講得很完整. 經(jīng)過我仔細(xì)的分析, 大膽的預(yù)測, 周密的思考, 大量的試驗, 上刀山,下火鍋, 不對,是火海, 好不容易才把它完美的實現(xiàn)了. 現(xiàn)在, 又把它連夜傳到Web630.Net上, 僅僅只是希望大家記住這個站點(diǎn), 同時希望各技術(shù)站多點(diǎn)原創(chuàng)文章, 為中國的程序業(yè)發(fā)展做點(diǎn)貢獻(xiàn).
<%
Rem 初始化ExcelApplication的工作環(huán)境
Dim ExcelApp,eBook,eSheet
Set ExcelApp = CreateObject(”Excel.Application”) ‘建立Excel對象
ExcelApp.DisplayAlerts=false ‘不顯示警告
ExcelApp.Application.Visible=false ‘不顯示界面
Rem 初始化Excel數(shù)據(jù)
‘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 數(shù)據(jù)導(dǎo)入
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 ‘調(diào)整圖片位置,下同, 否則它會壓住表格邊線
img.Left=img.Left+2 ‘單位是磅
eSheet.Rows(i).RowHeight=img.Height+4 ‘調(diào)整當(dāng)前行的高度,讓它自動與圖片高度相同
Next
Rem 保存上述所做的工作
‘eBook.Save ‘如果是打開已經(jīng)存在的Excel文件,則可選用這行來代替下面一行
eBook.SaveAs Server.MapPath(”zzz.xls”)
Set eSheet=Nothing
Set eBook=Nothing
‘ExcelApp.Quit ‘一定要退出, 否則Excel的進(jìn)程留在操作系統(tǒng)中.
set ExcelApp = Nothing
%>
ASP向Exce讀取或?qū)懭霐?shù)據(jù)時, 比較簡潔的一種方法是把Excel當(dāng)作數(shù)據(jù)庫使用SQL語句來操作. 網(wǎng)上很多地方都有相關(guān)的文章, 本文僅作為《ASP向Excel導(dǎo)數(shù)據(jù)(圖片)終結(jié)版》的輔助資料給大家參考.
<%
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 默認(rèn)為YES,表示第一行作為字段名, 否則視它為內(nèi)容
Rem 對于Excel2007,而應(yīng)為: “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()
%>
實際上用Excel.Application可以做到OfficeExcel軟件所能做到的全部操作, 功能相當(dāng)強(qiáng)大. 但我們每個人學(xué)習(xí)精力有限, 不可能每個都對它很熟悉. 于是乎, 我選用了大量的關(guān)鍵詞在百度與Google上搜索, 希望能得到一些有價值的東西. 但找來找去, 沒發(fā)現(xiàn)一篇是完整版, 大多數(shù)是詢問的, 而且代碼中包含諸多的明顯錯誤與功能上的缺性. 值得批評的是, 大量站點(diǎn)直接復(fù)制他人站點(diǎn)文章, 而且還是劣質(zhì)文章. 誒, 不找也罷! 佛曰 我不下地獄誰下地獄, 于是我給大家把這個工作給做了.
我首先找了個VBA的手冊合集, 還好它是chm格式. 打開其中的Vbaexcelxl10.chm, 嗯, 不錯不錯, 確實是一個不錯的手冊, 但是, 它不是一個教程, 欲哭無淚… 沒辦法, 只好硬頭皮看下去. 手冊畢竟是手冊, 不會一把些細(xì)節(jié)上的便捷操作提出來, 也不會把各部分內(nèi)容的邏輯關(guān)聯(lián)講得很完整. 經(jīng)過我仔細(xì)的分析, 大膽的預(yù)測, 周密的思考, 大量的試驗, 上刀山,下火鍋, 不對,是火海, 好不容易才把它完美的實現(xiàn)了. 現(xiàn)在, 又把它連夜傳到Web630.Net上, 僅僅只是希望大家記住這個站點(diǎn), 同時希望各技術(shù)站多點(diǎn)原創(chuàng)文章, 為中國的程序業(yè)發(fā)展做點(diǎn)貢獻(xiàn).
復(fù)制代碼 代碼如下:
<%
Rem 初始化ExcelApplication的工作環(huán)境
Dim ExcelApp,eBook,eSheet
Set ExcelApp = CreateObject(”Excel.Application”) ‘建立Excel對象
ExcelApp.DisplayAlerts=false ‘不顯示警告
ExcelApp.Application.Visible=false ‘不顯示界面
Rem 初始化Excel數(shù)據(jù)
‘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 數(shù)據(jù)導(dǎo)入
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 ‘調(diào)整圖片位置,下同, 否則它會壓住表格邊線
img.Left=img.Left+2 ‘單位是磅
eSheet.Rows(i).RowHeight=img.Height+4 ‘調(diào)整當(dāng)前行的高度,讓它自動與圖片高度相同
Next
Rem 保存上述所做的工作
‘eBook.Save ‘如果是打開已經(jīng)存在的Excel文件,則可選用這行來代替下面一行
eBook.SaveAs Server.MapPath(”zzz.xls”)
Set eSheet=Nothing
Set eBook=Nothing
‘ExcelApp.Quit ‘一定要退出, 否則Excel的進(jìn)程留在操作系統(tǒng)中.
set ExcelApp = Nothing
%>
ASP向Exce讀取或?qū)懭霐?shù)據(jù)時, 比較簡潔的一種方法是把Excel當(dāng)作數(shù)據(jù)庫使用SQL語句來操作. 網(wǎng)上很多地方都有相關(guān)的文章, 本文僅作為《ASP向Excel導(dǎo)數(shù)據(jù)(圖片)終結(jié)版》的輔助資料給大家參考.
復(fù)制代碼 代碼如下:
<%
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 默認(rèn)為YES,表示第一行作為字段名, 否則視它為內(nèi)容
Rem 對于Excel2007,而應(yīng)為: “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()
%>
相關(guān)文章
asp javascript picasa相冊外鏈批量導(dǎo)出
自己的空間想做一個相冊,找來找去用了picasa,功能很方便,唯一不足之處是獲取外鏈太麻煩,一個一個的復(fù)制粘貼太辛苦,于是用asp+javascript的方法寫了個簡單的程序2009-05-05asp 標(biāo)記字符串中指定字符變色不區(qū)分大小寫
今天遇到這種問題,單純的使用replace函數(shù)不行,他會改變原有的字符串的大小寫,在網(wǎng)上找到相關(guān)的代碼,自己備份下2013-04-04