共用方式為


Excel 來源

更新: 2007 年 9 月 15 日

Excel 來源會從 Microsoft Excel 活頁簿中的工作表或範圍擷取資料。

ms141683.note(zh-tw,SQL.90).gif附註:
在 64 位元電腦上,您必須在 32 位元模式下執行連接到 Microsoft Excel 資料來源的封裝。但連接到 Excel 資料來源的 Microsoft Jet OLE DB Provider 只提供 32 位元版本。
ms141683.note(zh-tw,SQL.90).gif附註:
若要從使用 Microsoft Office Excel 2007 的資料來源載入資料,請使用 OLE DB 來源。您無法使用 Excel 來源,連接至 Excel 2007 資料來源。如需詳細資訊,請參閱<Excel 連接管理員>。

Excel 來源提供四種不同的資料存取模式用來擷取資料:

  • 資料表或檢視。
  • 在變數中指定的資料表或檢視。
  • SQL 陳述式的結果。查詢可以是參數化查詢。
  • 儲存在變數中之 SQL 陳述式的結果。
ms141683.note(zh-tw,SQL.90).gif重要事項:
在 Excel 中,工作表或範圍相當於資料表或檢視。「Excel 來源」及「Excel 目的地」編輯器中的可用資料表清單,會顯示現有工作表 (以附加到工作表名稱的 $ 符號識別,例如 Sheet1$) 及具名範圍 (以沒有 $ 符號的方式識別,例如 MyRange)。如需詳細資訊,請參閱<使用狀況的考量>一節。

Excel 來源會使用 Excel 連接管理員連接到資料來源,而連接管理員會指定要使用的活頁簿檔案。如需詳細資訊,請參閱<Excel 連接管理員>。

Excel 來源有一個一般輸出和一個錯誤輸出。

使用狀況的考量

「Excel 連接管理員」會使用 Microsoft OLE DB Provider for Jet 4.0 及其支援的 Excel ISAM (Indexed Sequential Access Method,索引循序存取方法) 驅動程式,連接和讀寫資料至 Excel 資料來源。

許多現有的「Microsoft 知識庫」文件都有記錄此提供者和驅動程式的行為,而即使這些文件並非 Integration Services 或其前置的「資料轉換服務」專用,您仍會想瞭解可能導致未預期結果的特定行為。如需有關 Excel 驅動程式之使用與行為的一般資訊,請參閱<如何從 Visual Basic 或 VBA 搭配使用 ADO 與 Excel 資料>。

下列使用 Excel 驅動程式之 Jet 提供者的行為,在從 Excel 資料來源讀取資料時,可能導致未預期的結果。

  • 資料來源。Excel 活頁簿中資料的來源可以是工作表 (必須附加 $ 符號,例如 Sheet1$) 或已命名的範圍 (例如 MyRange)。在 SQL 陳述式中,工作表的名稱必須加以分隔 (例如 [Sheet1$]),以避免 $ 符號造成的語法錯誤。「查詢產生器」會自動加入這些分隔符號。當您指定工作表或範圍時,驅動程式會讀取連續的資料格區塊,從工作表或範圍左上角的第一個非空白資料格開始。因此,來源資料的資料列不可以空白,或標題或標頭資料列與資料列之間不可以有空白資料列。
  • 遺漏值。Excel 驅動程式會在指定來源中讀取特定資料列數目 (依預設為 8 個資料列),以猜測各資料行的資料類型。當資料行可能包含混合資料類型,尤其是數值資料與文字資料混合時,驅動程式會做出有利於大部分資料類型的決定,並於包含其他類型資料的資料格中傳回 Null 值。(在繫結中,以數值類型優先)。Excel 工作表中大部分的資料格格式化選項,似乎都不會影響這項資料類型決定。您可以藉由指定「匯入模式」來修改 Excel 驅動程式的這項行為。若要指定「匯入模式」,請在 [屬性] 視窗中將 IMEX=1 加入 Excel 連接管理員之連接字串中的「擴充屬性」值。如需詳細資訊,請參閱<PRB: Excel Values Returned as NULL Using DAO>。
  • 截斷的文字。當驅動程式判斷出某個 Excel 資料行包含文字資料時,驅動程式將會根據其取樣的最長值來選取資料類型 (字串或備忘錄)。如果驅動程式未在其取樣的資料列中發現任何長度超過 255 個字元的值,則會將該資料行視為 255 個字元字串資料行而非備忘錄資料行因此,長度超過 255 個字元的值可能會被截斷。若要以不截斷的方式從備忘資料行匯入資料,您必須確保至少在其中一個取樣資料列中的備忘錄資料行包含長度超過 255 個字元的值,否則您就必須增加驅動程式取樣的資料列數目,使其包含這類資料列。您可以提高 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel 登錄機碼下 TypeGuessRows 的值,以增加取樣的資料列數目。如需詳細資訊,請參閱<PRB: Transfer of Data from Jet 4.0 OLEDB Source Fails w/ Error>。
  • 資料類型。Excel 驅動程式只能辨識有限的一組資料類型。例如,所有的數值資料行都會被解譯為倍整數 (DT_R8),而所有的字串資料行 (備忘錄資料行除外) 全都會被解譯成 255 個字元的 Unicode 字串 (DT_WSTR)。Integration Services 對應 Excel 資料類型的情況如下:
    • 數值 – 雙精度浮點數 (DT_R8)
    • 貨幣 – 貨幣 (DT_CY)
    • 布林值 – 布林值 (DT_BOOL)
    • 日期/時間 – 日期 (DT_DATE)
    • 字串 – Unicode 字串,長度 255 (DT_WSTR)
    • 備忘錄 – Unicode 文字資料流 (DT_NTEXT)
  • 資料類型和長度轉換。Integration Services 不會隱含轉換資料類型。因此,您可能必須使用衍生的資料行轉換或資料轉換,在將 Excel 資料載入到非 Excel 目的地之前明確轉換 Excel 資料,或是在將非 Excel 資料載入到 Excel 目的地之前轉換資料。在這種情況下,使用「匯入和匯出精靈」建立初始封裝可能很有用,因為這個精靈會為您設定必要的轉換。某些轉換範例可能必須包含下列各項:
    • Unicode Excel 字串資料行與具有特定字碼頁之非 Unicode 字串資料行之間的轉換
    • 255 個字元之 Excel 字串資料行與不同長度之字串資料行之間的轉換
    • 雙精度 Excel 數值資料行與其他類型之數值資料行之間的轉換

設定 Excel 來源

您可以透過「SSIS 設計師」或以程式設計的方式來設定屬性。

如需有關 [Excel 來源編輯器] 對話方塊中可設定屬性的詳細資訊,請按下列其中一個主題:

[進階編輯器] 對話方塊會反映能以程式設計的方式設定之所有屬性。如需有關可以在 [進階編輯器] 對話方塊中或以程式設計方式設定之屬性的詳細資訊,請按下列其中一個主題:

如需有關如何設定屬性的詳細資訊,請按下列其中一個主題:

如需有關循環使用一組 Excel 檔案的資訊,請參閱<如何:循環使用 Excel 檔案和資料表>。

請參閱

工作

如何:循環使用 Excel 檔案和資料表

概念

Excel 目的地
Integration Services 變數
建立封裝資料流程
64 位元電腦上的 Integration Services 考量

其他資源

Integration Services 來源
Working with Excel Files with the Script Task

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2007 年 9 月 15 日

新增內容:
  • 新增有關如何使用 64 位元電腦來執行連接到 Excel 資料來源之封裝的附註。

2006 年 12 月 12 日

新增內容:
  • 新增有關 Excel 2007 資料來源的使用附註。

2005 年 12 月 5 日

變更的內容:
  • 擴充並重寫大部分的<使用狀況考量>一節,以釐清已知的問題。