使用 Response.ContentType = "application/excel" 輸出 HTML 表格並以 .xls 副檔名下載時,Excel 2007 及以上版本開啟會彈出警告:
「您嘗試開啟的檔案格式與副檔名指定的格式不一致。如果您信任此來源,請按『是』開啟。」

檔案內容實為 HTML (XML Spreadsheet 格式),但副檔名為 .xls (BIFF 二進位格式)。Excel 依據 Extension Hardening 機制檢測副檔名與實際內容不符,故提示警告。
僅影響當前使用者電腦,無法要求所有用戶修改登錄表。
regeditHKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security (Office 2010 為 14.0,2013 為 15.0,以此類推)ExtensionHardening0 (十六進位)ExtensionHardening 值說明:
0:不檢查副檔名與內容一致性,略過警告1:檢查不一致時顯示警告 (預設)2:檢查不一致時拒絕開啟將下載檔名改為 report.xhtml 或 report.xml,Excel 開啟時不再比對 .xls 格式,但用戶可能困惑於非標準副檔名。
使用 EPPlus、NPOI 或 ClosedXML 程式庫產生符合 Office Open XML 標準的 .xlsx 檔案,內容與副檔名完全一致,零警告。
// EPPlus 範例
using (var package = new OfficeOpenXml.ExcelPackage())
{
var ws = package.Workbook.Worksheets.Add("Sheet1");
ws.Cells["A1"].LoadFromDataTable(dt, true);
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment; filename=Report.xlsx");
Response.BinaryWrite(package.GetAsByteArray());
Response.End();
}
若無法引入第三方庫,可輸出 Excel 2003 XML Schema 格式,副檔名用 .xml,Excel 可完美開啟且無警告。
Install-Package EPPlus) 產生 .xlsx,功能最完整、相容性最好。application/vnd.ms-excel 或 text/xml。「格式與副檔名不符」警告本質是 Excel 安全機制偵測到 HTML 內容搭配 .xls 副檔名。根治之道是「內容與副檔名一致」:要么改副檔名,要么產生真實二進位格式。強烈建議採用 EPPlus 等庫產生 .xlsx,一勞永逸並獲得豐富報表功能。