搜尋本站文章

顯示具有 Excel 標籤的文章。 顯示所有文章
顯示具有 Excel 標籤的文章。 顯示所有文章

2013-10-01

認識Excel 檔案格式效能及大小,以XLS、XLSB、XLSX為例

從 Excel 2007 開始,與舊版相較,Excel 包含了各式各樣的檔案格式。

若忽略巨集、範本、增益集、PDF 和 XPS 檔案格式變異,則有三種主要格式:XLS、XLSB 及 XLSX。

XLS 格式

XLS 格式是與舊版相同的格式。

當您使用此格式時,您受限於 256 欄及 65,536 列。

當您以 XLS 格式儲存 Excel 2007 或 Excel 2010 活頁簿時,Excel 會執行相容性檢查。

檔案大小幾乎與舊版本一樣 (可能會儲存一些其他資訊),而效能稍微比舊版慢一點。

Excel 未依儲存格計算順序來執行的任何多執行緒最佳化,都不會以 XLS 格式儲存。

因此,以 XLS 格式儲存活頁簿、關閉再重新開啟活頁簿之後,活頁簿的計算會比較慢。

XLSB 格式

從 Excel 2007 開始,XLSB 是二進位格式。其結構化成壓縮的資料夾,其中包含大量的二進位檔案。

它比 XLS 格式壓縮更多,但壓縮量取決於活頁簿的內容。

例如,10 個活頁簿顯示的大小縮減係數範圍從 2 到 8,平均縮減係數為 4。

從 Excel 2007 開始,開啟和儲存效能只比 XLS 格式慢一點點。

XLSX 格式

從 Excel 2007 開始,XLSX 是 XML 格式,而且從 Excel 2007 開始是預設格式。

XLSX 格式是包含大量 XML 檔案的壓縮資料夾 (如果您將檔案的副檔名變更為 .zip,則可以開啟壓縮資料夾來檢視其內容)。

通常 XLSX 格式建立的檔案會比 XLSB 格式大 (平均大 1.5 倍),但還是比 XLS 檔案小非常多。

您應預期開啟和儲存時間會比 XLSB 檔案稍微長一點。




-- 01_Excel_三種檔案格式



在圖01中,可以觀察到:


  • XLS 格式:8,372 KB
  • XLSB 格式:976 KB
  • XLSX 格式:2,817 KB


-- 02_Excel_另存檔案格式






Excel 2010 效能:最佳化效能阻礙的秘訣
http://msdn.microsoft.com/zh-tw/library/office/ff726673(v=office.14).aspx

2013-08-16

認識樞紐分析表與交叉分析篩選器,以 PowerPivot for Excel 為例

示範版本:Excel 2013

建立樞紐分析表或樞紐分析圖報表

當您在具有 PowerPivot for Excel 的 Excel 活頁簿中工作時,可以在兩個不同的位置建立樞紐分析表和樞紐分析圖:在 PowerPivot 視窗的 [常用] 索引標籤,以及在 Excel 視窗的 [PowerPivot] 索引標籤。

如果您要使用 PowerPivot 視窗中的資料建立樞紐分析表或圖表,必須使用這些之中的一個選項。

位於 Excel 視窗之 [插入] 索引標籤上的 [樞紐分析表] 按鈕也可以建立樞紐分析表和樞紐分析圖,但這些樞紐分析表和樞紐分析圖無法使用 PowerPivot 資料,而只能使用儲存在 Excel 活頁簿之工作表中的資料。



當您建立包含 PowerPivot 資料的樞紐分析表時,也可以存取下列功能:

  • 使用公式語言 Data Analysis Expressions (DAX),提供時間智慧函數與其他功能。
  • 能夠在資料表之間建立關聯性、查閱相關聯的資料,以及使用關聯性篩選。
  • 能夠動態地根據目前內容套用篩選,或跨相關聯的資料表進行篩選。
  • 使用增強的交叉分析篩選器。 您可以同時快速地加入多個樞紐分析表報表和樞紐分析圖報表。 當您使用 [PowerPivot 欄位清單] 加入交叉分析篩選器時,交叉分析篩選器會自動篩選報表中的所有物件。





影片:
認識樞紐分析表與交叉分析篩選器,以 PowerPivot for Excel 為例




本影片所示範的工作有:

工作1:建立樞紐分析表(PivotTable)資料表與篩選

工作2:建立交叉分析篩選器(slicer)




使用交叉分析篩選器篩選資料

交叉分析篩選器是一種單鍵篩選控制項,可以縮小顯示在樞紐分析表和樞紐分析圖中的資料範圍。

交叉分析篩選器可在套用篩選器時,用來以互動方式顯示資料的變更。

例如,您可以建立依年份顯示銷售額的樞紐分析表報表或樞紐分析表圖,然後加入代表促銷活動的交叉分析篩選器。

此交叉分析篩選器會加入為樞紐分析表或樞紐分析圖的額外的控制項,可讓您快速地選取準則,並立即顯示變更。

您也可以藉由在列或欄標題中加入欄位,而將促銷活動的明細嵌入報表本身,但是交叉分析篩選器不會在資料表中加入額外資料列,而只提供資料的互動式檢視。

附註

PowerPivot 所控制的交叉分析篩選器是由內部演算法所配置,而且當您重新整理 UI 時,這些交叉分析篩選器會重新調整回該配置。

如果您對 PowerPivot 交叉分析篩選器的配置進行變更,這些配置可能會在重新整理工作表時遺失。

若要避免這項行為,請將交叉分析篩選器拖曳出 PowerPivot 交叉分析篩選器區域,然後 PowerPivot 將不會控制交叉分析篩選器配置。




參考資料

建立樞紐分析表或樞紐分析圖報表
http://technet.microsoft.com/zh-tw/library/gg413436.aspx

使用交叉分析篩選器篩選資料
http://technet.microsoft.com/zh-tw/library/gg399096.aspx

使用交叉分析篩選器篩選樞紐分析表資料
http://office.microsoft.com/zh-tw/excel-help/HA010359466.aspx

2013-08-05

初探建立Power View 工作表(sheet)、資料表(tables)、地圖(Map),以 Excel 2013 為例

示範版本:Excel 2013

Power View 的資料來源

在 Excel 2013 中,您可以直接在 Excel 中使用資料做為 Excel 和 SharePoint 中的 Power View 之基礎。

當您新增表格並建立它們之間的關聯時,Excel 會建立資料模型 (幕後)。

資料模型是表格及其表格的集合,能反映出商務功能和流程之間的真實關聯,例如產品與庫存及銷售的關聯。

您可以繼續修改與增強 Excel 中 PowerPivot 內的相同資料模型,為 Power View 報表製作更複雜的資料模型。

您也可以依據在 SQL Server 2012 Analysis Services (SSAS) 伺服器上執行的表格式模型,以建立 Power View 報表。

表格式模型與資料模型作為複雜的後端資料來源和您的資料觀點之間的橋樑。

模型的語意層表示 Power View 中的所有項目都將密切運作。


Power View 資料表

資料表是所有視覺效果的基礎。 在 Power View 中建立資料表的方式有很多種。

若要建立任何一種視覺效果,您都必須先在 Power View 中建立資料表,然後輕鬆地將其轉換成其他的視覺效果。

建立資料表之後,就可以將它轉換成多種視覺效果。


Power View 中的地圖

Power View 中的地圖會在地理內容中顯示您的資料。

Power View 中的地圖使用 Bing 地圖方塊,讓您可以進行縮放和平移,就如同使用任何其他 Bing 地圖。

若要讓地圖工作,Power View 必須透過安全網路連線將資料傳送到 Bing,以進行地理編碼,因此它會要求您啟用內容。

新增位置和欄位會在地圖上放置點。值愈大,點也愈大。

當您新增多值數列時,地圖上會出現圓形圖,而圓形圖的大小會顯示總計大小。


-- 01_設計Power_View



-- 02_Power_View頁籤


-- 03_使用的磁碟空間






影片:
初探建立Power View 工作表(sheet)、資料表(tables)、地圖(Map),以 Excel 2013 為例



本影片所示範的工作有:

工作1:以Excel表格為資料來源,建立Power View 工作表(sheet)

工作2:建立資料表(tables)、地圖(Map)




參考資料

第一次啟動 Power View,以 Excel 2013 為例
http://sharedderrick.blogspot.tw/2013/07/power-view-excel-2013.html

Power View 資料表
http://office.microsoft.com/zh-tw/excel-help/HA104048372.aspx?CTT=5&origin=HA102834754

Power View 中的地圖
http://office.microsoft.com/zh-tw/excel-help/HA103005792.aspx?CTT=5&origin=HA102901475#Maps

在 Excel 2013 建立 Power View 工作表
http://office.microsoft.com/zh-tw/excel-help/HA102899553.aspx

Power View:探索、視覺化,以及展示資料
http://office.microsoft.com/zh-tw/excel-help/power-view-explore-visualize-and-present-your-data-HA102835634.aspx

2013-07-31

第一次啟動 Power View,以 Excel 2013 為例

示範版本:Excel 2013

Power View 和 PowerPivot 只適用於 Office Professional Plus 和 Office 365 Professional Plus 版本。

第一次啟動 Power View,以 Excel 2013 為例

第一次插入 Power View 工作表時,Excel 會要求您啟用 Power View 增益集。

  • 按一下 [啟用]。



使用 Power View 須安裝 Silverlight,因此第一次使用時,如果您沒有 Silverlight,請執行下列動作:


  • 按一下 [安裝 Silverlight]。
  • 在您完成安裝 Silverlight 的各項步驟之後,再於 Excel 按一下 [重新載入]。


附註  

如果您是在 Excel 2013 開啟 Excel 2010 活頁簿,然後試著插入 Power View 工作表,您可能會看到一則訊息,告訴您活頁簿的 PowerPivot 資料模型是以舊版 PowerPivot 增益集所建立。

若為如此,您可以升級活頁簿,以便新增 Power View 工作表。

不過,活頁簿一旦升級之後,就無法在 Excel 2010 開啟了。








影片:
第一次啟動 Power View,以 Excel 2013 為例





Power View 的兩個版本

(1) 在 SharePoint 中的 Power View 報表是 RDLX 檔案。

(2) 在 Excel 中,Power View 工作表是 Excel XLSX 活頁簿的一部分。

您無法在 Excel 中開啟 Power View RDLX 檔案,或是在 SharePoint 的 Power View 中使用 Power View 工作表開啟 Excel XLSX 檔案。

您也無法將圖表或其他視覺效果從 RDLX 檔案複製到 Excel 活頁簿中。

不過,您可以將含 Power View 工作表的 Excel XLSX 檔案儲存至 SharePoint (無論是在企業內部或是 Office 365 中),並在 SharePoint 中開啟這些檔案。

兩個版本的 Power View 都必須在電腦上安裝 Silverlight。




參考資料

在 Excel 2013 建立 Power View 工作表
http://office.microsoft.com/zh-tw/excel-help/HA102899553.aspx

Power View:探索、視覺化,以及展示資料
http://office.microsoft.com/zh-tw/excel-help/power-view-explore-visualize-and-present-your-data-HA102835634.aspx

2013-07-30

認識將 PowerPivot 資料模型升級至 Excel 2013 與 建立階層(hierarchy)

示範版本:Excel 2013

將 PowerPivot 資料模型升級至 Excel 2013

SQL Server 2012 版本的 PowerPivot。這是第二版的 PowerPivot。

「此活頁簿的 PowerPivot 資料模型是使用舊版 PowerPivot 增益集所建立。您必須將這個資料模型隨 PowerPivot for Excel 2013 一起升級。」



這兩句話看起來是不是很眼熟呢? 這表示您是在 Excel 2013 中開啟 Excel 2010 活頁簿,而且該活頁簿包含以舊版 PowerPivot 增益集建立的內嵌 PowerPivot 資料模型。

當您嘗試在 Excel 2010 活頁簿中插入 Power View 工作表時,可能會看到此訊息。

在 Excel 2013 中,資料模型是活頁簿的組成部分。
此訊息是讓您瞭解,必須先升級內嵌的 PowerPivot 資料模型,才能在 Excel 2013 中切割、切入及篩選資料。




建立階層(hierarchy)

您可以對 PowerPivot 增益集中的資料模型進行的其中一項修改是加入階層。

例如,如果您具有地理資料,可能會想要建立以國家 (地區) 開始的階層,並向下鑽研至區域與縣 (市)。

階層是資料行的清單,在樞紐分析或 Power View 報表中使用時會被視為單一項目。

階層在欄位清單中會以單一物件的形式出現。

在建立報表和樞紐分析表時,階層可讓使用者更輕鬆地選取及導覽資料的一般路徑。

若要建立階層,請使用 PowerPivot 增益集。

階層是可檢視的資料行集合清單,您建立這些資料行做為子層級,依照任何順序放入階層中。

在報表用戶端工具中,階層可以與其他資料行分開顯示,讓用戶端使用者更易於選取及導覽通用的資料路徑。

資料表可以包含數十個或甚至數百個具有複雜資料行名稱的資料行。 因此,用戶端使用可能不易尋找及包含報表資料。

用戶端使用者只要按一下即可在報表中加入整個階層 (包含多個資料行)。 階層也可以提供簡單直覺式的資料結構檢視。

 例如,您可以在 Date 資料表中建立 Calendar 階層。 Calendar Year 做為最上層的父層級,而 Month、Week 和 Day 則加入做為子層級 (Calendar Year->Month->Week->Day)。

此階層顯示從 Calendar Year 到 Day 的邏輯關聯性。

階層可以包含在檢視方塊中。

檢視方塊會定義可檢視之模型子集,對模型提供有焦點的商務特有或應用程式特有視點。

例如,檢視方塊可以根據使用者特定的報表需求,提供必要的資料項目階層。

您可以在圖表檢視中建立、編輯及刪除階層。

您也可以在 PowerPivot 和 Excel 欄位清單中檢視階層 (如果您使用 SQL Server Data Tools (SSDT),請按一下 [模型] 功能表,然後按一下 [在 Excel 中進行分析])。



影片:
認識 PowerPivot for Excel,以 Excel 2013 為例


本影片所示範的工作有:

工作1:將 PowerPivot 資料模型升級至 Excel 2013

工作2:建立階層(hierarchy)




參考資料

將 PowerPivot 資料模型升級至 Excel 2013
http://office.microsoft.com/zh-tw/excel-help/HA103356104.aspx

Excel 2010 與 Excel 2013 的 PowerPivot 資料模型版本相容性
http://office.microsoft.com/zh-tw/excel-help/HA103929426.aspx

PowerPivot 中的階層
http://office.microsoft.com/zh-tw/excel-help/HA102837067.aspx

PowerPivot 中的階層 -- SQL Server 2012
http://msdn.microsoft.com/zh-tw/library/hh272054.aspx

Power View 及 PowerPivot 影片
http://office.microsoft.com/zh-tw/excel-help/HA104009784.aspx

--
在 Excel 2013 增益集中啟動 PowerPivot
http://sharedderrick.blogspot.tw/2013/07/excel-2013-powerpivot.html

認識 PowerPivot for Excel,以 Excel 2013 為例
http://sharedderrick.blogspot.tw/2013/07/powerpivot-for-excel-excel-2013.html

PowerPivot Help for SQL Server 2012
http://msdn.microsoft.com/zh-tw/library/hh965697.aspx

2013-07-22

認識 Excel 的 Master Data Services 增益集 - 以 SQL Server 2012 為例

示範版本:SQL Server 2012

Excel 的 Master Data Services 增益集

Excel 的 Master Data Services 增益集可讓多個使用者能夠以熟悉的工具更新主資料,而不損及 Master Data Services 中的資料整合性。




透過 SQL Server Master Data Services 適用於 Excel 的增益集,您可以將參考資料的主要清單散發給組織內使用 Excel 的每個人。 安全性會決定使用者可檢視和更新的資料。

您可以將資料的篩選清單從 MDS 載入 Excel 中,以便將它當做任何其他資料使用。 完成之後,您可以將資料發行回 MDS,以便進行集中儲存。

如果您是管理員,請使用 適用於 Excel 的增益集 來建立實體和屬性並且載入資料。 這樣就不需要使用任何其他工具,將資料載入模型中。

在 適用於 Excel 的增益集 中,您可以使用 Data Quality Services (DQS),在將資料載入 MDS 之前比對資料。 這樣有助於防止 MDS 中的資料重複。

在此增益集中,使用者只要按一下按鈕就能將資料發行至 MDS 資料庫。

系統管理員可以使用此增益集,不需要啟動任何系統管理工具,就能建立新的模型物件並載入資料,有助加速開發進程。

有了適用於 Excel 的 Master Data Services 增益集,所有主資料都可以在 MDS 中保持集中式管理,同時將讀取或更新資料的功能散發給需要的使用者。




影片:
認識 Excel 的 Master Data Services 增益集 - 以 SQL Server 2012 為例


本影片所示範的工作有:

工作1:使用 Excel 連接 Master Data Services 模型(Model)

工作2:增加成員

工作3:在實體(entities) 內,增加自由格式的屬性(free-form attribute)

工作4:增加網域屬性(domain-based attribute)以及相關屬性



參考資料

安裝 Master Data Services(MDS) - 以 SQL Server 2012 為例
http://sharedderrick.blogspot.tw/2013/05/master-data-servicesmds-ssis-2012.html

認識 Master Data Services 模型(Model) - 以 SQL Server 2012 為例
http://sharedderrick.blogspot.tw/2013/07/master-data-services-model-sql-server.html

適用於 Microsoft Excel 的 Master Data Services 增益集
http://msdn.microsoft.com/zh-tw/library/hh231024.aspx

適用於 Microsoft® Excel® 的 Microsoft® SQL Server® 2012 Master Data Services 增益集
http://www.microsoft.com/zh-tw/download/details.aspx?id=29064

屬性 (Master Data Services)
http://msdn.microsoft.com/zh-tw/library/ee633745.aspx

2012-02-04

Excel 有資料,但匯入到資料庫後卻是 NULL;設定登錄機碼 TypeGuessRows、連線字串 IMEX

檢視示範的 Excel 資料:

-- 01_Excel原始資料



-- 02_進一步檢視此儲存格,前面多了單引號_1



-- 03_進一步檢視此儲存格,前面多了單引號_2



在上圖中,可以觀察到儲存格:B3,其所存放的資料前面多了一個單引號(single quotation marks)。

Excel 資料內容的說明:

第一列是存放資料行的名稱。
第二列開始,是存放資料值。

其中,第一筆資料是數值,但第二筆資料的第二個資料行卻是多了單引號,資料類型是無法使用數值的資料類型。



示範環境:
1. Windows Server 2008 R2 x64。


以下使用數種程式,以此 Excel 檔案當做來源使用。

(一) 若使用 SSIS 的「Excel 來源」,搭配 Microsoft.Jet.OLEDB.4.0 資料提供者,連接到 *.xls

使用 Microsoft.Jet.OLEDB.4.0 資料提供者,附檔名是:xls。

-- 04_SSIS_Excel_來源



在上圖4 中,可以觀察到竟然是呈現 NULL 。


(二) 使用 OPENROWSET 資料表函數,搭配 Microsoft.ACE.OLEDB.12.0 資料提供者,連接到 *.xls

-- 05_OPENROWSET 函數_未使用 IMEX



在上圖5 中,可以觀察到竟然是呈現 NULL 。

(三) 使用 OPENDATASOURCE 函數,搭配 Microsoft.ACE.OLEDB.12.0 提供者,連接到 *.xls

-- 06_OPENDATASOURCE 函數_未使用IMEX



在上圖6 中,可以觀察到竟然是呈現 NULL 。

(四) 使用「連結伺服器(Linked Server)」,搭配 Microsoft.ACE.OLEDB.12.0 提供者,連接到 *.xls

-- 07_連結伺服器(Linked Server)_未使用IMEX



在上圖7 中,可以觀察到竟然是呈現 NULL 。

(五) 使用「OLE DB 來源」,搭配 Microsoft.ACE.OLEDB.12.0 提供者,連接到 *.xlsx

使用 Microsoft.ACE.OLEDB.12.0 資料提供者,附檔名是:xlsx。

-- 08_OLE DB 來源_未使用IMEX






認識 Excel 資料提供者

依據不同的 Excel 版本,可以分成為:

(1) Excel 2003 版本(包含之前的版本)
使用的是:Microsoft.Jet.OLEDB,目前最新的版本是:Microsoft.Jet.OLEDB.4.0。

(2) Excel 2007、2010 版本
使用的是:Microsoft.ACE.OLEDB,目前最新的版本是:Microsoft.ACE.OLEDB.14.0。

上述的連線 Excel 資料提供者,預設:採取「自動偵測」的方式來識別資料值的資料類型。

認識登錄機碼:TypeGuessRows

登錄機碼:TypeGuessRows 是指要檢查資料類型的列數。
資料類型是依據所找到的資料種類最大值來決定。

如果其中有關係,資料類型依下列順序決定:數目、貨幣、日期、文字和布林值。

如果碰到的資料不符合猜測的欄資料類型,它會以 Null 值傳回。

匯入時,如果某一欄含有混合的資料類型,則整欄都會依 ImportMixedTypes 設定來轉換。
要檢查的列數預設值為 8。

也就是說,由 Excel 資料提供者去讀取登錄機碼:TypeGuessRows 的設定值。
此登錄機碼:TypeGuessRows 的預設值是:8。

也就是說,此 Excel 資料提供者會去掃描前 8 筆的資料列來,做作為判斷其資料類型。

TypeGuessRows 的有效範圍值是 0 到 16。

如果設定為 0,是表示掃描來源資料列的筆數是 16384。
請留意,使用 0 值,若資料檔又很大時,將造成效能的衝擊。


有關混合資料類型的討論

如前所述,系統必須推測 Excel 工作表或範圍中每一欄的資料類型 (這不會受 Excel 儲存格格式設定所影響)。

如果您在同一欄中混合使用數值和文字值,會發生嚴重的問題。

Jet 和 ODBC 提供者都會傳回主要類型的資料,但是次要資料類型則會傳回 NULL (空) 值。
如果同一欄中兩種類型混合使用的比例相同,提供者會選擇數值而非文字值。

例如:

(1) 在 8 個已掃描的列中,如果欄位中包含 5 個數值和 3 文字值,提供者會傳回 5 個數值和 3 個 Null 值。

(2) 在 8 個已掃描的列中,如果欄位中包含 3 個數值和 5 文字值,提供者會傳回 3 個 Null 值和 5 個文字值。

(3) 在 8 個已掃描的列中,如果欄位中包含 4 個數值和 4 文字值,提供者會傳回 4 個數值和 4 個 Null 值。


以下是此登錄機碼:TypeGuessRows 的路徑:

-- Microsoft.Jet.OLEDB.3.5,例如:Excel 97
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines\Excel

-- Microsoft.Jet.OLEDB.4.0,例如:Excel 2000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel

若是在 Windows Server 2008 R2 x64 平台上,登錄機碼:TypeGuessRows 的路徑:

-- 32位元,Microsoft.Jet.OLEDB.4.0 資料提供者
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Excel

-- 32位元,Microsoft.ACE.OLEDB.14.0 資料提供者
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Excel

-- 09_x64平台_登錄機碼:TypeGuessRows_.Jet.OLEDB.4.0_32位元版本



-- 10_x64平台_登錄機碼:TypeGuessRows_.ACE.OLEDB.14.0_32位元版本



若是在 x64 作業系統上,同時安裝了 32位元與64位元版本的 Microsoft.ACE.OLEDB 資料提供者

-- 32位元,Microsoft.ACE.OLEDB.12.0 資料提供者
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Excel

-- 64位元,Microsoft.ACE.OLEDB.14.0 資料提供者
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Excel

-- 11_x64平台_登錄機碼:TypeGuessRows_.ACE.OLEDB.12.0_32位元版本



-- 12_x64平台_登錄機碼:TypeGuessRows_.ACE.OLEDB.14.0_64位元版本



在上圖11、12中,可以看到是安裝了 32 位元版本的 ACE.OLEDB.12.0 資料提供者,以及 64 位元版本的 ACE.OLEDB.14.0 資料提供者。


認識登錄機碼:ImportMixedTypes

此機碼的預設值是:Text。
可以設定成 MajorityType 或 Text。

如果設成 MajorityType,混合資料類型的欄就會在匯入時轉換為主控資料類型。
如果設定成 Text,混合的資料類型就會在匯入時轉換為 Text。

以下整理了數個登錄機碼:

項目 描述
win32 msexcl40.dll 的位置。完整路徑於安裝時決定。
AppendBlankRows 新增新資料之前,附加至 3.5 版或 4.0 版工作表結尾的空白列數。例如,如果 AppendBlankRows 設成 4,Microsoft Jet 在附加內含資料的列之前,會先附加 4 個空白列至工作表的結尾。這項設定的整數值可以是 0 至 16 的數字;預設值為 01 (新增 1 列)。
FirstRowHasNames 表示資料表第一列是否包含欄名稱的二進位值。01 的值表示,在匯入時,欄名稱由第一列取得。00 的值表示第一列沒有欄名稱,欄名稱顯示為 F1、F2、F3 等等。預設值為 01。



認識資料連線字串的 IMEX 參數

在建立與 Excel 連線用的連線字串上,可以加入設定參數:IMEX = 1。

此參數是告訴系統要使用「匯入模式(Import mode)」驅動程式。

此參數與登錄機碼:ImportMixedTypes = Text 有關連,這會強制轉換成文字的混合的資料。

但是,ISAM 預設的驅動程式查看前 8 個資料列,並從該取樣會判斷資料型別。
如果這八列取樣是所有數字再設定 IMEX = 1 不會將預設資料類型轉換成文字 ; 它會保留數字。

您必須小心該 IMEX = 1。
這是 IMPORT 模式所以結果可能會無法預測,如果您嘗試執行附加或更新這個模式中的資料。

模式
0 Export mode
1 Import mode
2 Linked mode (full update capabilities)


認識資料連線字串的 HDR 參數

欄位標題:依預設,會假設 Excel 資料來源的第一欄包含欄位標題,這個標題可以用來做為欄位名稱。

如果沒有,則必須關閉這項設定,否則第一列的資料將會「消失」,而變成欄位名稱。
如果不指定這個設定參數,其預設值為 HDR=Yes。

因為「擴充屬性(Extended Properties)」字串可以包含數個參數值,必須使用雙引號括住這個字串,雙引號外還要加上另一對額外的雙引號,用以告知系統將第一組雙引號視為常值。



以下提供數個連線字串的範例程式碼:

(一) 使用 OPENROWSET 函數,搭配 Microsoft.ACE.OLEDB.12.0 提供者,連接到 *.xls

--EX1. 使用 OPENROWSET 函數,搭配 Microsoft.ACE.OLEDB.12.0 提供者,連接到 *.xls

-- 未使用 IMEX=1 參數
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
 'Excel 12.0;Database=C:\mySSIS\EX_NULL.xls;HDR=YES','SELECT * FROM [Sheet1$]'); 
GO

-- 使用 IMEX=1 參數
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
 'Excel 12.0;Database=C:\mySSIS\EX_NULL.xls;HDR=YES;IMEX=1','SELECT * FROM [Sheet1$]'); 
GO

-- 13_OPENROWSET 函數_使用 IMEX



(二) 使用 OPENDATASOURCE 函數,搭配 Microsoft.ACE.OLEDB.12.0 提供者,連接到 *.xls

--EX1. 使用 OPENDATASOURCE 函數,搭配 Microsoft.ACE.OLEDB.12.0 提供者,連接到 *.xls

-- 未使用 IMEX=1 參數
SELECT * 
FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0',
 'Data Source="C:\mySSIS\EX_NULL.xls";Extended Properties=EXCEL 12.0')...[Sheet1$];
GO

-- 有使用 IMEX=1 參數
SELECT * 
FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0',
 'Data Source="C:\mySSIS\EX_NULL.xls";Extended Properties="Excel 12.0;HDR=Yes;IMEX=1"')...[Sheet1$];
GO

-- 14_OPENDATASOURCE 函數_使用IMEX



(三) 使用「連結伺服器(Linked Server)」,搭配 Microsoft.ACE.OLEDB.12.0 提供者,連接到 *.xls

--EX1. 使用「連結伺服器(Linked Server)」,搭配 Microsoft.ACE.OLEDB.12.0 提供者,連接到 *.xls

-- 未使用 IMEX=1 參數
EXEC sp_addlinkedserver 
   @server = 'EX_NULL', 
   @provider = 'Microsoft.ACE.OLEDB.12.0', 
   @srvproduct=N'ExcelData',
   @provstr='EXCEL 12.0',
   @datasrc = 'C:\mySSIS\EX_NULL.xls';
GO

-- 查詢資料
SELECT * 
FROM [EX_NULL]...[Sheet1$]
GO

-- 使用 IMEX=1 參數
EXEC sp_addlinkedserver 
   @server = 'EX_IMEX', 
   @provider = 'Microsoft.ACE.OLEDB.12.0', 
   @srvproduct=N'ExcelData',
   @provstr='EXCEL 12.0;HDR=Yes;IMEX=1',
   @datasrc = 'C:\mySSIS\EX_NULL.xls';
GO

-- 查詢資料
SELECT * 
FROM [EX_IMEX]...[Sheet1$]
GO

-- 15_連結伺服器(Linked Server)_使用IMEX



-- 16_連結伺服器的設定





可能的作法:

若不考慮偵測資料型態對於效能的影響,可以使用以下的方式來組態:

1. 修改 登錄機碼:TypeGuessRows 的值為 0。
2. 在連線字串上,加入設定參數:IMEX = 1。

讓 Excel 資料提供者掃描來源資料列的筆數,可達到:16384。



參考資料:

PRB: Excel 傳回的值當作 NULL 使用 DAO OpenRecordset
http://support.microsoft.com/kb/194124/zh-tw

PRB: Jet 4.0LEDB 來源資料的傳輸緩衝區溢位錯誤而失敗
http://support.microsoft.com/kb/281517/zh-tw

如何從 Visual Basic 或 VBA 搭配使用 ADO 與 Excel 資料
http://support.microsoft.com/kb/257819/zh-tw

資料被截斷成 255 個字元,Excel ODBC 驅動程式
http://support.microsoft.com/kb/189897/zh-tw

起始 Microsoft Excel 驅動程式
適用: Microsoft Office Access 2003
http://office.microsoft.com/zh-tw/access-help/HP001032159.aspx

Initializing the Microsoft Excel Driver
Applies to: Microsoft Office Access 2003
http://office.microsoft.com/en-us/access-help/initializing-the-microsoft-excel-driver-HP001032159.aspx

ACC2002: Ignored MaxScanRows Setting May Cause Improper Data Types in Linked Tables
http://support.microsoft.com/kb/282263/en-us

Initializing the Microsoft Excel Driver
Access 2007
http://office.microsoft.com/en-us/access-help/HV080756961.aspx

problem with retreving a excel data through excel source component.
http://social.msdn.microsoft.com/Forums/en-US/sqlintegrationservices/thread/65a2b606-b7d1-4e7d-8bd5-03c68dc293d2/