Berikut ini adalah trik sederhana untuk membuat file Microsoft Excel menggunakan ASP Classic. Pada Microsoft Office 97 dan yang lebih baru dapat menginterpretasikan halaman HTML. Sebuah tabel direpresentasikan dalam sheet sebagai baris dan kolom. Trik ini dapat digunakan sebagai penampil laporan (report viewer) dengan client Microsoft Office. Dengan menggunakan trik ini, file excel yang dihasilkan dapat dimanipulasi sebagaimana file excel biasa.
Keterbatasan dari trik ini adalah file yang dihasilkan tidak bisa lebih dari satu sheet dalam satu workbook.
Berikut contoh untuk membuat laporan sederhana dengan memanfaatkan file excel pada ASP Classic
<%@ language=vbscript %>
<%
response.buffer = true
response.ContentType = "application/vnd.ms-excel"
response.AddHeader "content-disposition", "inline; filename=dynamic.xls"
%>
<html xmlns:x="urn:schemas-microsoft-com:office:excel" >
<head>
<% Response.Write "<!--[if gte mso 9]>" %>
<xml><x:ExcelWorkbook>
<x:ExcelWorksheets>
<x:ExcelWorksheet>
<x:Name><% Response.Write(Year(Now()) & "-" & Month(Now()) & "-" & Day(Now())) %></x:Name>
<x:WorksheetOptions>
<x:Print>
<x:ValidPrinterInfo/>
</x:Print>
</x:WorksheetOptions>
</x:ExcelWorksheet>
</x:ExcelWorkbook>
</xml>
<% Response.Write "<![endif]-->" %>
<title>Excel Doc</title>
</head>
<body>
<table border="1" cellpadding="1" cellspacing="1">
<tr> <td colspan="7" style='font-size: x-large; font-weight: bold; text-align: center;'>Laporan Penjualan</td> </tr>
<tr> <td colspan='7'style=' font-size: large; font-weight: bold; text-align: center;'>Tanggal: <% Response.Write(Day(Now()) & ' ' & MonthName(Month(Now())) & ' ' & Year(Now())) %></td> </tr>
<tr>
<td style='background-color: navy; color: white; text-align: center; font-weight: bold'>No</td>
<td style='background-color: navy; color: white; text-align: center; font-weight: bold'>Kode Item</td>
<td style='background-color: navy; color: white; text-align: center; font-weight: bold'>Nama Barang</td>
<td style='background-color: navy; color: white; text-align: center; font-weight: bold'>Qty</td>
<td style='background-color: navy; color: white; text-align: center; font-weight: bold'>Unit</td>
<td style='background-color: navy; color: white; text-align: center; font-weight: bold'>Harga Satuan</td>
<td style='background-color: navy; color: white; text-align: center; font-weight: bold'>Total Harga</td>
</tr>
<tr> <td>1</td> <td>KM29</td> <td>Mie Gurih Goreng</td> <td><% Randomize(Time()) Response.Write cint(Rnd(100)*100) %></td> <td>Box</td> <td>30000</td> <td>=D4*F4</td> </tr>
<tr> <td>2</td> <td>DR01</td> <td>Kecap Manis XYZ</td> <td><% Response.Write cint(Rnd(100)*100) %></td> <td>Botol</td> <td>20000</td> <td>=D5*F5</td> </tr>
<tr> <td>3</td> <td>YU89</td> <td>Kacang Dua Ayam</td> <td><% Response.Write cint(Rnd(100)*100) %></td> <td>Box</td> <td>50000</td> <td>=D6*F6</td> </tr>
<tr> <td>4</td> <td>SA12</td> <td>Aque Botol 1 Liter</td> <td><% Response.Write cint(Rnd(100)*100) %></td> <td>Box</td> <td>48000</td> <td>=D7*F7</td> </tr>
<tr> <td></td> <td></td> <td>Total</td> <td></td> <td></td> <td></td> <td>=SUM(G4:G7)</td> </tr>
</table>
</body>
</html>
<%
response.flush
response.end
%>
Pada contoh di atas, response.ContentType = "application/vnd.ms-excel" digunakan untuk mengasosiasikan data yang ditransfer sebagai dokumen MS Excel. Dan response.AddHeader "content-disposition", "inline; filename=dynamic.xls" digunakan untuk memberikan nama file sesuai dengan format nama Microsoft Excel dengan ekstensi .xls, bukan nama halaman ASP. Pada akhir halaman, terdapat perintah response.flush untuk mengirimkan semua data ke client dan ditutup dengan response.end untuk mengakhiri hubungan dengan client.
Isi dari halaman dapat disesuaikan dengan kebutuhan. Pada contoh di atas, data masih dinamis, hanya tanggal diambil dari tanggal sistem dan quantity barang diambil secara acak.