在傳統 ASP.NET WebForms 或傳統 ASP 頁面中,若需將客戶端 HTML <table> 直接匯出為 Excel 檔(.xls),可利用 Excel 應用程式的 COM 物件(clsid:0002E510-0000-0000-C000-000000000046)配合 JavaScript 完成。此法需客戶端已安裝 Excel 2000 或更新版本,且瀏覽器為 Internet Explorer(需啟用 ActiveX)。
<OBJECT> 元素,類別 ID 指向 Excel.Sheet。<table> 的 outerHTML 指派給該物件的 HTMLData 屬性。ActiveSheet.Export 將資料匯出至指定路徑(或提供下載)。<script type="text/javascript">
function exportExcel(tblData) {
// 確保只建立一次 COM 物件
if (typeof(EXPORT_OBJECT) != "object") {
document.body.insertAdjacentHTML("afterBegin",
'<OBJECT style="display:none" classid="clsid:0002E510-0000-0000-C000-000000000046" id="EXPORT_OBJECT"></OBJECT>');
}
with (EXPORT_OBJECT) {
DataType = "HtmlData";
HTMLData = tblData.outerHTML; // 取得完整表格 HTML
try {
// 匯出至用戶端本機路徑(需信任網站、IE 安全性設定允許)
ActiveSheet.Export("C:\\ExportedData.xls", 0);
alert("匯出 Excel 檔案完成!");
} catch (e) {
alert("匯出失敗,請確認:\n1. 已安裝 Excel 2000 或以上版本\n2. 未開啟同名 .xls 檔案\n3. IE 安全性設定允許 ActiveX 執行");
}
}
}
</script>
<table id="tblData" border="1">
<tr><th>姓名</th><th>年齡</th></tr>
<tr><td>張三</td><td>28</td></tr>
<tr><td>李四</td><td>32</td></tr>
</table>
<br />
<input type="button" value="匯出為 Excel" onclick="exportExcel(tblData)" />
若專案為 ASP.NET Core / MVC / Razor Pages 或跨平台需求,強烈建議改用伺服器端程式庫:
伺服器端產生檔案後,透過 File() 回傳 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 供使用者下載,相容性與安全性皆大幅提升。