如何使用SAS從Excel中讀取一系列單元格

原文連接:http://tecdat.cn/?p=5211

電子表格不是數據庫。可是,咱們中的許多人使用電子表格就好像它們是數據庫同樣,而後當電子表格佈局不支持數據庫樣式嚴格的可預測行,列和變量類型時,咱們就會掙扎 - 這是分析和報告所需的基本元素。若是您使用SAS從Microsoft Excel讀取數據,當您須要的數據不是從單元格A1開始時,您能夠作什麼?數據庫

經過設計,SAS能夠從電子表格中的任何單元格範圍讀取數據。在本文中,我將介紹如何在PROC IMPORT中使用RANGE語句來獲取所需的數據。服務器

對於SAS 9.4及更高版本,SAS建議使用DBMS = XLSX以得到最大的靈活性。它適用於全部操做系統,無需其餘組件,如PC文件服務器。您的Excel文件必須採用Excel 2007或更高版本格式(XLSX)。你這樣作須要SAS / ACCESS到PC文件的許可證。(剛剛學習?這些DBMS = XLSX技術也適用於SAS大學版。)佈局

若是您的Excel數據不是從單元格A1(導入過程的默認起點)開始,那麼您能夠添加包含特定單元格的RANGE =值。最簡單的方法是在Excel中使用命名範圍來定義數據的確切邊界。學習

如何添加命名範圍

要在Excel中定義命名範圍,請突出顯示要包括的單元格範圍,而後只需在「名稱框」中鍵入範圍的新名稱:ui

而後保存Excel文件。編碼

而後要導入SAS,請在RANGE =選項中指定範圍名稱:spa

proc importdatafile="/myprojects/myfile.xlsx"out=mydatareplace;range="myspecialrange";run;

對單元格區域使用Excel表示 

若是您不提早知道範圍怎麼辦?您可使用PROC IMPORT讀取整個工做表,但結果將不包含所需的列標題和類型。考慮這樣一張表:操作系統

這段代碼會讀它:設計

proc importdatafile="/myprojects/middle.xlsx"out=mid dbms=xlsxreplace;run;

但結果將包含許多空單元格,而且值將做爲全部字符類型讀取:code

經過附加編碼,您可使用DATA步驟將此結果「修復」到另外一個傳遞中。或者,若是您願意爲特定單元格區域添加帶有Excel表示法的RANGE選項,則能夠在第一遍中正確閱讀:

proc importdatafile="/myprojects/middle.xlsx"out=mid dbms=xlsxreplace;range="Sheet1$E7:K17";run;

如何「發現」Excel文件的結構

您還可使用LIBNAME XLSX從Excel中讀取整個工做表,或者只是做爲發現步驟在運行PROC IMPORT以前查看Excel文件包含的工做表。可是,LIBNAME XLSX不顯示Excel命名範圍。

在SAS for Windows系統上,您可使用LIBNAME EXCEL(32位)或LIBNAME PCFILES(64位)來顯示有關Excel文件的更多信息。

libnamed pcfiles path="c:\myprojects\middle.xlsx";proc datasetslib=d;quit;/* always clear the libname, as it locks the file */libnamed clear;

請注意,DBMS = XLSX不支持咱們在舊版DBMS = XLS(僅支持舊格式XLS文件)中看到的一些選項,例如STARTROW和NAMEROW。DBMS = XLSX支持GETNAMES(將工做表或範圍的第一個記錄視爲變量名稱)。

相關文章
相關標籤/搜索