SSIS 內建 Excel Source 僅支援舊版 `.xls` (Jet 4.0),不支援 `.xlsx`。需用 OLE DB Source + Microsoft ACE OLE DB 12.0/16.0 Provider 繞過限制。
| 參數 | 說明 | 建議值 |
|---|---|---|
| HDR | 首行是否列名 | YES |
| IMEX | 混合類型導入模式 | 1 (強制文本模式,避免類型推斷錯誤) |
| TypeGuessRows | 掃描行數決定類型 | 0 (掃描所有行) 或 註冊表修改 |
| ReadOnly | 只讀模式 | True (避免鎖定文件) |
-- 方案 A: Foreach 文件枚舉器 (文件級) + Foreach ADO 枚舉器 (Sheet 級)
-- 方案 B: Script Task 獲取所有 Sheet 名 → 物件變量 → Foreach ADO 遍歷
-- 數據流內:OLE DB Source (動態 Sheet 名) → 目標表
-- 連接管理器屬性 "ExcelFilePath" + "OpenRowset" 由變量驅動
-- 變量 @SheetName 通過表達式: "[" + @SheetName + "$]"
| 錯誤 | 原因 | 修復 |
|---|---|---|
| 'Microsoft.ACE.OLEDB.12.0' provider is not registered | 未裝 ACE / 位數不匹配 | 裝對應位數 ACE、專案 Run64BitRuntime 對齊 |
| External table is not in the expected format | 文件非 .xlsx / 損壞 | 確認副檔名、用 Excel 另存為 |
| Sheet 名稱含空格/特殊字符 | 引用格式錯誤 | 用 `['Sheet Name$']` 包裹 |
