יצירה דינאמית של קובץ אקסל

‏ • 9 באוקטובר, 2002



לעתים אנו רוצים להציג בדפדפן נותנים, אך לא בפורמט HTML רגיל, אלא כקובץ אקסל.
אנחנו יכולים לעשות זאת ע”י קישור לקובץ אקסל קיים, אשר יוצג בדפדפן אם לגולש מותקנת חבילת אופיס (אם היא לא מותקנת תופיע תיבת “שמירה בשם”).
אך מה קורה אם אנחנו רוצים להציג לגולש נתונים מעודכנים מבסיס הנתונים שלנו? הרי אין לנו קובץ כזה מוכן.
במקרה זה אנו יכולים לחולל דינאמית את קובץ האקסל.

שורת המחץ

השורה המאפשרת לנו להציג את הנתונים בפורמט אקסל, היא השורה הבאה:



1
2
3  

<%
response.ContentType=“application/vnd.ms-excel”
%>


שורה זו מציינת כי מעתה והלאה, כל מה שייפלט לדף יהיה בפורמט אקסל.
עכשיו אנחנו יכולים לבנות את הטבלה שלנו כרגיל.

הצגת הנתונים

הצגת הנתונים נעשית כרגיל.
בדוגמא זו אנו יוצרים דינאמית את הטבלה, עוברים על כל הרשומות, וכל השדות, ומציגים אותם.
אנחנו משתמשים בשיטת getrows כדי לייעל את העבודה, אך ניתן לעשות זאת גם במעבר רגיל על הרקורסדט.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38  

<%
response.ContentType=“application/vnd.ms-excel”

Set rs=Server.CreateObject(“ADODB.Recordset”)
Set conn=Server.CreateObject(“ADODB.Connection”)
conn.Open “myDSN”
sql=“SELECT * FROM tbl”
rs.open sql,conn

totalfields=rs.fields.count

response.write “<table border=1><tr>”
For each item in rs.fields
    response.write “<td><b>” & item.name & “</b></td>”
Next
If not rs.eof then
    arrAllData=rs.getrows
    totalrecs=rs.recordcount
End If
rs.close
set rs=nothing
conn.close
set conn=nothing
response.write “</tr>”
If totalrecs=0 then
    response.write “<tr><td colspan=” & totalfields & “>No data was returned</td></tr>”
Else
    For rowcount=0 to totalrecs-1
        response.write “<tr>”
        For colcount=0 to totalfields-1
            response.write “<td>” & arrAllData(colcount,rowcount) & “</td>”
        Next
        response.write “</tr>”
    Next
End If
response.write “</table>”

%>


לאחר שקובץ האקסל מוצג בדפדפן, יכול הגולש לשומרו אצלו במחשב.

בהצלחה!

תגיות: , , ,

entry

סטודיו לבניית אתרים שהוקם בינואר 2005

תגובות בפייסבוק