事件
3月31日 下午11時 - 4月2日 下午11時
規模最大的 SQL、Fabric 與 Power BI 學習盛會。 3 月 31 日至 4 月 2 日。 使用代碼 FABINSIDER 可節省 $400。
立即報名適用於:SQL Server
Azure Data Factory 中的 SSIS Integration Runtime
本文說明您必須提供的連線資訊,以及必須使用 SQL Server Integration Services (SSIS) 設定以從 Excel 匯入資料,或將資料匯出至 Excel 的設定。
下列各節包含成功利用 SSIS 使用 Excel,或要了解及針對常見問題進行疑難排解所需的資訊:
您可以使用的工具。
您需要的檔案。
當您使用 SSIS 從 Excel 載入資料或將資料載入 Excel 時,您必須提供的連線資訊,以及您必須設定的設定。
已知問題和限制。
您可以使用下列其中一種工具,透過 SSIS 從 Excel 匯入資料或將資料匯出至 Excel:
SQL Server Integration Services (SSIS) 。 使用 Excel 連接管理員,建立使用 Excel 來源或 Excel 目的地的 SSIS 套件。 (本文不會說明如何建立 SSIS 套件)。
SSIS 上建置的 [SQL Server 匯入和匯出精靈] 。 如需詳細資訊,請參閱使用 SQL Server 匯入和匯出精靈來匯入或匯出資料與連線至 Excel 資料來源 (SQL Server 匯入和匯出精靈)。
您可能必須下載適用於 Excel 的連線元件 (如果它們尚未安裝的話),然後才能使用 SSIS 從 Excel 匯入資料,或將資料匯出至 Excel。 預設不會安裝適用於 Excel 的連線元件。
使用無法在 Office 隨選即用外部使用 Access ODBC、OLEDB 或 DAO 介面內的資料表,以了解您的環境是否需要其他元件。
注意:Office 系統驅動程式僅在特定案例下支援,如需特定指導,請參閱 Office 伺服器端自動化的考量。
第一個步驟是指出您想要連接至 Excel。
在 SSIS 中建立 Excel 連線管理員以連接至 Excel 來源或目的地檔案。 有數種方式可建立連線管理員:
在 [連線管理員] 區域,以滑鼠右鍵按一下然後選取 [新增連線] 。 在 [新增 SSIS 連線管理員] 對話方塊中,依序選取 [EXCEL] 和 [新增] 。
在 [SSIS] 功能表上,選取 [新增連線] 。 在 [新增 SSIS 連線管理員] 對話方塊中,依序選取 [EXCEL] 和 [新增] 。
當您在 [Excel 來源編輯器]或 [Excel 目的地編輯器] 的 [連線管理員] 頁面設定 [Excel 來源] 或 [Excel 目的地] 的同時建立連線管理員。
在 [匯入和匯出精靈] 的 [選擇資料來源] 或 [選擇目的地] 頁面上,選取 [資料來源] 清單中的 Microsoft Excel。
如果您在資料來源清單中看不到 Excel,請確定是否執行 32 位元精靈。 Excel 連線元件均通常是 32 位元檔案,在 64 位元精靈中不會顯示。
要提供資訊的第一項資訊是 Excel 檔案的路徑和檔案名稱。 提供此資訊的方式是使用 [Excel 連線管理員編輯器] 中的 SSIS 套件,或在 [匯入和匯出精靈] 的 [選擇資料來源] 或 [選擇目的地] 頁面。
以下列格式輸入路徑和檔案名稱:
本機電腦上的檔案為 C:\TestData.xlsx。
網路共用上的檔案為 \\Sales\Data\TestData.xlsx。
或者,按一下 [瀏覽] 以使用 [開啟] 對話方塊找出試算表。
重要
您不能連接至受密碼保護的 Excel 檔案。
要提供的第二項資訊是 Excel 檔案的版本。 提供此資訊的方式是使用 [Excel 連線管理員編輯器] 中的 SSIS 套件,或在 [匯入和匯出精靈] 的 [選擇資料來源] 或 [選擇目的地] 頁面。
選取用於建立檔案的 Microsoft Excel 版本,或另一個相容版本。 例如,如果您無法安裝 2016 連線元件,您可以安裝 2010 元件並選取此清單中的 [Microsoft Excel 2007-2010] 。
如果您只安裝了較舊版本的連線元件,可能無法選取清單中的較新 Excel 版本。 Excel 版本清單包含 SSIS 支援的所有 Excel 版本。 這份清單中的項目存在並不表示已安裝必要的連線元件。 例如,即使您尚未安裝 2016 連線元件,Microsoft Excel 2016 也會出現在清單中。
如果您從 Excel 匯入資料,下一個步驟就是指出資料的第一個資料列是否包含資料行名稱。 提供此資訊的方式是使用 [Excel 連線管理員編輯器] 中的 SSIS 套件,或在 [匯入和匯出精靈] 的 [選擇資料來源] 頁面上。
如果您要從 Excel 匯出資料,且啟用了此選項,則匯出資料的第一列會包含資料行名稱。
有三種 Excel 物件可以作為資料的來源或目的地:工作表、您指定位址的資料格具名範圍或未具名範圍。
工作表。 若要指定工作表,請在工作表名稱結尾加上 $
字元,並以分隔符號括住字串,例如 [Sheet1$] 。 或者,在現有資料表和檢視的清單中,尋找結尾為 $
字元的名稱。
命名範圍。 若要指定命名範圍,請提供範圍名稱,例如 MyDataRange。 或者,在現有資料表和檢視的清單中,尋找結尾不是 $
字元的名稱。
未命名範圍。 若要指定尚未命名的儲存格範圍,請在工作表名稱結尾加上 $ 字元、指定範圍,再以分隔符號括住字串,例如 [Sheet1$A1:B4] 。
若要選取或指定您想要用作資料來源或目的地的 Excel 物件類型,請執行下列事項之一:
在 SSIS 中,在 [Excel 來源編輯器] 或 [Excel 目的地編輯器] 的 [連線管理員] 頁面上,執行下列事項之一:
若要使用工作表或具名範圍,請選取 [資料表或檢視] 作為 [資料存取模式] 。 然後,在 [Excel 工作表的名稱] 清單中,選取工作表或具名範圍。
若要使用您指定位址的未具名範圍,請選取 [SQL 命令] 作為 [資料存取模式] 。 然後,在 [SQL 命令文字] 欄位中,輸入類似下列範例的查詢:
SELECT * FROM [Sheet1$A1:B5]
在 [匯入和匯出精靈] 中,執行下列其中一項:
當您從 Excel 匯入時,執行下列其中一項:
若要使用 工作表 或 具名範圍,請在 [Specify table copy or query] \(指定資料表複製或查詢) 畫面,選取 [Copy data from one or more tables or views] \(從一或多個資料表或檢視複製資料) 。 然後,在 [Select Source Tables and Views] 選取來源資料表和檢視) 頁面上,於 [來源] 資料行中,選取來源工作表及具名範圍。
若要您使用指定位址的 未具名範圍 ,請在 [Specify table copy or query] \(指定資料表複製或查詢) 頁面上,選取 [Write a query to specify the data to transfer] \(撰寫查詢來指定要傳送的資料) 。 然後,在 [Provide a Source Query] \(提供來源查詢) 頁面上,提供類似於下列範例的查詢:
SELECT * FROM [Sheet1$A1:B5]
當您 匯出 Excel 時,執行下列其中一項:
若要使用 工作表 或 具名範圍,請在 [Select Source Tables and Views] \(選取來源資料表和檢視) 頁面上的 [目的地] 資料行中,選取目的地工作表與具名範圍。
若要使用指定位址的 未具名範圍 ,請在 [Select Source Tables and Views] \(選取來源資料表和檢視) 頁面的 [目的地] 資料行中,以不含分隔符號的下列格式輸入範圍: Sheet1$A1:B5
。 精靈會新增分隔符號。
選取或輸入要匯入或匯出的 Excel 物件之後,您也可以在精靈的 [Select Source Tables and Views] \(選取來源資料表和檢視) 頁面上執行下列動作:
選取 [編譯對應] 來檢閱來源與目的地之間的資料行對應。
預覽範例資料,選取 [預覽] 以確定它如您的預期。
Excel 驅動程式只能辨識有限的一組資料類型。 例如,所有的數值資料行都會被解譯為倍整數 (DT_R8),而所有的字串資料行 (備忘錄資料行除外) 全都會被解譯成 255 個字元的 Unicode 字串 (DT_WSTR)。 SSIS 對應 Excel 資料類型的情況如下:
數值 - 雙精確度浮點數 (DT_R8)
貨幣 - 貨幣 (DT_CY)
布林值 - 布林值 (DT_BOOL)
日期/時間 - datetime (DT_DATE)
字串 - Unicode 字串,長度 255 (DT_WSTR)
備忘錄 - Unicode 文字資料流 (DT_NTEXT)
SSIS 不會隱含地轉換資料類型。 因此,您可能必須使用衍生的資料行轉換或資料轉換,在將 Excel 資料載入至非 Excel 目的地之前明確轉換 Excel 資料,或是在將資料載入至 Excel 目的地之前,轉換來自非 Excel 來源的資料。
以下是一些可能需要的轉換範例:
Unicode Excel 字串資料行與具有特定字碼頁之非 Unicode 字串資料行之間的轉換。
255 個字元之 Excel 字串資料行與不同長度之字串資料行之間的轉換。
雙精確度 Excel 數值資料行與其他類型之數值資料行之間的轉換。
提示
如果您使用 [匯入和匯出精靈],且您的資料需要這其中的某些轉換,精靈會為您設定所需的轉換。 因此,即使是您想要使用 SSIS 套件時,使用 [匯入和匯出精靈] 來建立初始套件可能會很實用。 讓精靈為您建立並設定連線管理員、來源、轉換和目的地。
當您指定工作表或具名範圍為來源時,驅動程式會讀取「連續的」 資料格區塊,從工作表或範圍左上角的第一個非空白資料格開始。 因此,您的資料不需要從資料列 1 開始,但您的來源資料中不能有空的資料列。 例如,您不能在資料行標題與資料列之間有空的資料列,或是標題後面接著在工作表頂端有空的資料列。
如果資料上方有空的資料列,便無法作為工作表來查詢資料。 在 Excel 中,您必須選取資料範圍並將名稱指派給該範圍,然後查詢具名範圍,而不是工作表。
Excel 驅動程式會在指定來源中讀取特定資料列數目 (依預設為八個資料列),以猜測各資料行的資料類型。 當資料行可能包含混合資料類型,尤其是數值資料與文字資料混合時,驅動程式會做出有利於大部分資料類型的決定,並於包含其他類型資料的資料格中傳回 Null 值。 (在繫結中,以數值類型優先)。Excel 工作表中大部分的資料格格式化選項,似乎都不會影響這項資料類型決定。
您可以藉由指定「匯入模式」將所有值當作文字匯入,來修改 Excel 驅動程式的這項行為。 若要指定「匯入模式」,請在 [屬性] 視窗中將 IMEX=1
新增到 Excel 連線管理員之連接字串中的 [擴充屬性] 值。
當驅動程式判斷出某個 Excel 資料行包含文字資料時,驅動程式將會根據其取樣的最長值來選取資料類型 (字串或備忘錄)。 如果驅動程式未在其取樣的資料列中發現任何長度超過 255 個字元的值,則會將該資料行視為 255 個字元字串資料行而非備忘錄資料行 因此,長度超過 255 個字元的值可能會被截斷。
若要從備忘資料行匯入資料而不截斷,您有兩個選項:
確定至少一個取樣的資料列中的備忘錄資料行,包含長度超過 255 個字元的值
增加驅動程式取樣的資料列數目,以包含這類資料列。 您可以提高下列登錄機碼下的 TypeGuessRows 值,藉以增加取樣的資料列數目:
可轉散發套件的元件版本 | 登錄機碼 |
---|---|
Excel 2016 | HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Office\16.0\Access Connectivity Engine\Engines\Excel |
Excel 2010 | HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Excel |
建立 Excel 連線管理員,並使用您想要建立的新 Excel 檔案路徑和檔案名稱。 然後,在 [Excel 目的地編輯器] 中,針對 [Excel 工作表名稱] 選取 [新增] 建立目的地工作表。 此時,SSIS 會使用指定的工作表,建立新的 Excel 檔案。
在 [選擇目的地] 頁面上,選取 [瀏覽] 。 在 [開啟] 對話方塊方塊中,覽至您想要用來建立新 Excel 檔案的資料夾、提供新檔案的名稱,然後選取 [開啟] 。
當您將範圍指定為目的地時,如果範圍的「資料行」 數目比來源資料還要少,則會發生錯誤。 不過,如果您所指定範圍的「資料列」 數目比來源資料還要少,則精靈會繼續寫入資料列而不會有錯誤,並且會延伸範圍定義,以符合新的資料列數目。
在 Excel 資料行中成功儲存長於 255 個字元的字串之前,驅動程式必須能將目的地資料行的資料類型辨識為 備忘 ,而不是 字串。
如需本文中所述的元件和程序的詳細資訊,請參閱下列文章:
Excel 連線管理員
Excel 來源
Excel 目的地
使用 Foreach 迴圈容器來執行 Excel 檔案和資料表迴圈
以指令碼工作處理 Excel 檔案
事件
3月31日 下午11時 - 4月2日 下午11時
規模最大的 SQL、Fabric 與 Power BI 學習盛會。 3 月 31 日至 4 月 2 日。 使用代碼 FABINSIDER 可節省 $400。
立即報名訓練
模組
Export data from Dataverse and use Microsoft Excel to edit records - Training
Discover how to export and edit Microsoft Dataverse table data using Excel files, while understanding security concepts.
認證
Microsoft Office 專家:Excel (Office 2016) - Certifications
藉由獲得Microsoft Office 專家(MOS)認證,證明您擁有充分利用 Excel 2016 所需的技能。