本文提供一段可直接使用的 JavaScript 函數,透過 ActiveXObject 啟動 Excel 應用程式,將網頁上指定表格(如 GridView)的資料逐欄寫入新建的 Excel 活頁簿,並自動設定標題與欄位名稱。適用於僅支援 IE 瀏覽器且已調整 ActiveX 安全性設定的企業內部系統。
function AutomateExcel() {
try {
var oXL;
try {
oXL = new ActiveXObject("Excel.Application");
} catch (e) {
alert("無法啟動 Excel!\n\n若確定電腦已安裝 Excel,請調整 IE 安全等級:\n工具 → 網際網路選項 → 安全性 → 自訂等級 → 對未標示為安全的 ActiveX 控制項初始化並指令碼執行 → 啟用");
return false;
}
var oWB = oXL.Workbooks.Add();
var oSheet = oWB.ActiveSheet;
var table = $("#GridView1")[0];
var rows = table.rows;
var columns = table.rows(0).cells;
// 設定活頁簿與工作表標題
var name = "第 <%= _CurrentPage %> 頁";
oXL.Caption = name;
oSheet.Name = name;
// 寫入欄位標題(依實際需求調整)
oSheet.Cells(1, 1).Value = "申請單編號";
oSheet.Cells(1, 2).Value = "出貨金額";
oSheet.Cells(1, 3).Value = "行銷部門";
oSheet.Cells(1, 4).Value = "業務人員";
oSheet.Cells(1, 5).Value = "內部合約號";
oSheet.Cells(1, 6).Value = "客戶名稱";
oSheet.Cells(1, 7).Value = "幣別";
oSheet.Cells(1, 8).Value = "客戶船期";
oSheet.Cells(1, 9).Value = "國別";
oSheet.Cells(1, 10).Value = "核銷單號";
oSheet.Cells(1, 11).Value = "發票號碼";
oSheet.Cells(1, 12).Value = "報關日期";
// 後續可續寫將 rows 資料逐列寫入 oSheet
// ...
} catch (err) {
console.error("匯出失敗:", err);
}
}
#GridView1 一致,或自行修改選取器。