We have an ancient system in combo of classic ASP (VBA) and Allaire JRun which just refuse to die 🙂 Recently I was tasked to add a report that generate Excel document.
Did you know that we can simply provide a HTML format and disguise it as XLS document. With that, Excel (2003 and above) will be able to open it?
In the beginning of the asp file, we set the response header:
<% Response.AddHeader "content-disposition","attachment; filename=Report.xls" Response.ContentType = "application/vnd.ms-excel" %>
Next how do we format the data correctly? We can do that with a little bit of CSS:
.number { mso-number-format:General; } .longdate { mso-number-format:"dd\-MMM\-yyyy HH:mm"; } .text{ mso-number-format:"\@"; } .decimal{ mso-number-format:"0.00"; }
If you want more formats, you can always open Excel, right-click any cell, then click Format Cells.
Cool right? Frankly, I only know this trick today 😀
To use it, we simply assign the CSS class to the td element:
<% dim Dim strconn Set strconn = Server.CreateObject("ADODB.Connection") 'ODBC Connection to Oracle strconn.Open ( "DSN=_ODBC_NAME;USERNAME=_DB_USERNAME;PASSWORD=_DB_PASSWORD;SERVICE=_ORACLE_DB_SID" ) Dim sql sql = ".... Some SQL query ......" Set rs = Server.CreateObject ( "ADODB.RecordSet" ) rs.Open sql, strconn, adLockOptimistic While not rs.EOF %> <tr align=center> <td class="text"><%=rs(0)%></td> <td><%=rs(1)%></td> <td class="number"><%=rs(2)%></td> <td><%=rs(3)%></td> <td><%=rs(4)%></td> <td><%=rs(5)%></td> <td><%=rs(6)%></td> <td><%=rs(7)%></td> <td><%=rs(8)%></td> <td class="number"><%=rs(9)%></td> <td class="number"><%=rs(10)%></td> <td class="longdate"><%=rs(11)%></td> <td><%=rs(12)%></td> <td><%=rs(13)%></td> <td><%=rs(14) %></td> </tr> <% rs.movenext wend %>
loading...
About Hardono
Incoming Search
asp, excel, html