Kết xuất dữ liệu ra dạng Excel từ trang ASP

KT XUT DLIU RA DNG EXCEL TTRANG ASP  
Thông thường, các ng dng web kết xut dliu ca các báo cáo ra dưới dng bng biu. Srt  
cn thiết nếu người dùng cũng nhn được dliu này dưới dng Excel để có thsdng cho các  
mc đích khác.  
Kĩ thut để đạt được mc đích này khá đơn gin. Ý tưởng chính ca kĩ thut này là sdng thuc  
tính ContentType ca đối tượng Response trong ASP và thc hin theo các bước tun tsau:  
Bước 1: Chỉ định dliu sẽ được chuyn đi theo định dng Excel  
Đơn gin chcn dùng câu lnh: Response.ContentType = “application/vnd.ms-excel”. Thông  
thường, cn phi đặt câu lnh Response.Buffer = True và Response.Clear trước câu lnh này để  
đảm bo dliu được chuyn xung client chính xác.  
Bước 2: Kết xut dliu dưới dng bng theo cách làm thông thường.  
Dòng đầu tiên ca bng cha tên ca các ct sẽ được hin thtrong tp tin excel.  
Hãy xem ví dminh ha sau:  
Data2Excel.asp  
<%  
Response.Buffer = True  
Response.Clear  
‘ thiết lp định dng skết xut là Excel  
Response.ContentType = “application/vnd.ms-excel”  
‘ kết ni vi CSDL  
strDSN = "DRIVER=Microsoft Access Driver (*.mdb);DBQ="  
đường dn tương đối đến tp tin CSDL  
strDSN = strDSN & Server.MapPath("myDB.mdb")  
set Conn = Server.CreateObject("ADODB.Connection")  
Conn.Open strDSN  
strSQL = “SELECT * FROM myTable”  
set rs = Conn.Execute(strSQL)  
rowstart = “<tr>”  
rowend = “</tr>”  
cellstart = “<td>”  
cellend = “</td>”  
Response.Write “<TABLE border=1>”  
‘ dòng đầu tiên in tên các ct  
Response.Write rowstart  
For i = 0 to rs.Fields.Count -1  
Response.Write cellstart & "<b>" & rs.Fields(i).name & "</b>" & cellend  
Next  
Response.Write rowend  
‘ in dliu ca tng dòng  
Do while not rs.EOF  
Response.Write rowstart  
For i = 0 to rs.Fields.Count –1  
Response.Write cellstart & rs.Fields(i)& cellend  
Next  
Response.Write rowend  
rs.MoveNext  
Loop  
rs.Close  
set rs = Nothing  
Conn.Close  
set Conn = nothing  
Response.Write “</TABLE>”  
Response.End  
%>  
Bàn lun:  
Ưu đim ca cách làm trên là cho phép bn sdng các đon mã sn có lúc kết xut dliu ra dng  
bng theo cách thông thường để chuyn sang định dng Excel. Tuy nhiên vic kết xut dliu theo  
định dng Excel như trong ví dtrên có thchiếm tài nguyên ca webserver đặc bit khi dliu ln  
do đó chnên dùng cách này nếu trang này không được sdng thường xuyên.  
Nếu mun kết xut dliu ln và thc hin thường xuyên, ta có thkết xut thông qua định dng  
CSV (Comma-Separated Values) để ti ưu hơn. Các tp tin theo định dng CSV là các tp tin văn  
bn mà dliu trong các ct được ngăn cách vi nhau bi du phy “,” (comma), rt thường được  
dùng cho vic trao đổi dliu gia các hqun trCSDL và các chương trình bng tính như Excel.  
Ví d, nếu bn mmt tp tin csv có ni dung như sau trong Excel, ta snhn được mt bng 3  
dòng, 3 ct:  
Doe,John,944-7077  
Johnson,Mary,370-3920  
Smith,Abigail,299-3958  
Để chuyn dliu sang định dng CSV, vn vi cách làm tương tbng cách thay đổi thuc tính  
ContentType vdng “application/csv” và thêm dòng lnh sau để yêu cu trình duyt hin thhp  
thoi ti tp tin v: Response.AddHeader "Content-Disposition", "filename=mydata.csv;". Sau đó,  
thay vì định dng dliu dưới dng bng, ta định dng dliu theo dng dliu các ct được phân  
cách vi nhau bng du phy “,”. Xem ví dminh ha sau:  
Data2CSV.asp  
<%  
Response.Buffer = True  
Response.Clear  
‘ thiết lp định dng skết xut là Excel  
Response.ContentType = “application/csv”  
Response.AddHeader "Content-Disposition", "filename=mydata.csv;"  
‘ kết ni vi CSDL  
strDSN = "DRIVER=Microsoft Access Driver (*.mdb);DBQ="  
đường dn tương đối đến tp tin CSDL  
strDSN = strDSN & Server.MapPath("myDB.mdb")  
set Conn = Server.CreateObject("ADODB.Connection")  
Conn.Open strDSN  
strSQL = “SELECT * FROM myTable”  
set rs = Conn.Execute(strSQL)  
‘ dòng đầu tiên in tên các ct  
For i = 0 to rs.Fields.Count -1  
Response.Write rs.Fields(i).name & ",”  
Next  
Response.Write vbNewLine ‘ kết thúc mt dòng dliu  
‘ in dliu ca tng dòng  
Do while not rs.EOF  
For i = 0 to rs.Fields.Count –1  
Response.Write rs.Fields(i)& “, ”  
Next  
Response.Write vbNewLine ‘ kết thúc mt dòng dliu  
rs.MoveNext  
Loop  
rs.Close  
set rs = Nothing  
Conn.Close  
set Conn = nothing  
Response.End  
%>  
Hn chế ca định dng này là do dliu chlà các kí tASCII nên skhông dùng được trong  
trường hp dliu sdng Unicode, ngoài ra cn phi có cách xlí thích hp trong trường hp dữ  
liu trong các ct có du phy “,”. Excel xlí trường hp này bng cách thay đặt toàn bdliu  
trong du “”. Ví dnếu bn có dliu là Abc, xyz thì dliu sẽ được đổi thành “Abc, xyz”  
Tham kho thêm ti:  
Đình Duy – ldduy@fit.hcmuns.edu.vn  
pdf 3 trang baolam 09/05/2022 3360
Bạn đang xem tài liệu "Kết xuất dữ liệu ra dạng Excel từ trang ASP", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfket_xuat_du_lieu_ra_dang_excel_tu_trang_asp.pdf