共用方式為


Excel 來源

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

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

  • 資料表或檢視。

  • 在變數中指定的資料表或檢視。

  • SQL 陳述式的結果。 查詢可以是參數化查詢。

  • 儲存在變數中之 SQL 陳述式的結果。

重要

在 Excel 中,工作表或範圍相當於資料表或檢視。 「Excel 來源」及「Excel 目的地」編輯器中的可用資料表清單,會顯示現有工作表 (以附加到工作表名稱的 $ 符號識別,例如 Sheet1$) 及具名範圍 (以沒有 $ 符號的方式識別,例如 MyRange)。 如需詳細資訊,請參閱<使用狀況的考量>一節。

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

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

使用狀況的考量

Excel 連線管理員會使用 Microsoft OLE DB Provider for Jet 4.0 及其支援的 Excel ISAM (索引循序存取方法) 驅動程式,將資料連線並寫入 Excel 資料來源。

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

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

  • 資料來源。 Excel 活頁簿中資料的來源可以是工作表 (必須附加 $ 符號,例如 Sheet1$) 或已命名的範圍 (例如 MyRange)。 在 SQL 陳述式中,工作表的名稱必須加以分隔 (例如 [Sheet1$]),以避免 $ 符號造成的語法錯誤。 「查詢產生器」會自動加入這些分隔符號。 當您指定工作表或範圍時,驅動程式會讀取連續的資料格區塊,從工作表或範圍左上角的第一個非空白資料格開始。 因此,來源資料的資料列不可以空白,或標題或標頭資料列與資料列之間不可以有空白資料列。

  • 遺漏值。 Excel 驅動程式會在指定來源中讀取特定資料列數目 (依預設為 8 個資料列),以猜測各資料行的資料類型。 當資料行可能包含混合資料類型,尤其是數值資料與文字資料混合時,驅動程式會做出有利於大部分資料類型的決定,並於包含其他類型資料的資料格中傳回 Null 值。 (在繫結中,以數值類型優先)。Excel 工作表中大部分的資料格格式化選項,似乎都不會影響這項資料類型決定。 您可以藉由指定「匯入模式」來修改 Excel 驅動程式的這項行為。 若要指定匯入模式,請在 [屬性] 視窗的 Excel 連線管理員連接字串中新增 IMEX=1 至 [擴充屬性] 的值。 如需詳細資訊,請參閱 PRB: Excel Values Returned as NULL Using DAO OpenRecordset(PRB:使用 DAO OpenRecordset 以 NULL 形式傳回的 Excel 值)。

  • 截斷的文字。 當驅動程式判斷出某個 Excel 資料行包含文字資料時,驅動程式將會根據其取樣的最長值來選取資料類型 (字串或備忘錄)。 如果驅動程式未在其取樣的資料列中發現任何長度超過 255 個字元的值,則會將該資料行視為 255 個字元字串資料行而非備忘錄資料行 因此,長度超過 255 個字元的值可能會被截斷。 若要以不截斷的方式從備忘資料行匯入資料,您必須確保至少在其中一個取樣資料列中的備忘錄資料行包含長度超過 255 個字元的值,否則您就必須增加驅動程式取樣的資料列數目,使其包含這類資料列。 您可以提高 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel 登錄機碼底下 TypeGuessRows 的值,藉以增加取樣的資料列數目。 如需詳細資訊,請參閱 PRB︰從 Jet 4.0 OLEDB 來源傳送資料失敗,發生緩衝區溢位錯誤(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)

    • 日期/時間 - datetime (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 檔案群組的資訊,請參閱 使用 Foreach 迴圈容器來循環使用 Excel 檔案和資料表