楼主: giantxu
822 3

[技术讨论与投票] 求教:Win 11 64位系统下的SAS 9.4如何导入超过255列的Excel文件 [推广有奖]

  • 0关注
  • 3粉丝

大专生

63%

还不是VIP/贵宾

-

威望
0
论坛币
807 个
通用积分
29.7000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
357 点
帖子
22
精华
0
在线时间
92 小时
注册时间
2009-3-24
最后登录
2025-8-10

楼主
giantxu 发表于 2024-1-7 18:45:42 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
大家好,向大家请教一个问题。

我在Windows 11系统中安装的64位SAS 9.4 TS Level 1M2版本。Excel使用的是Microsoft 365的最新版本。也安装了Microsoft Access Database Engine 2016 Redistributable

我在向系统中导入一个超过255列的Excel文件(xlsx格式)。当我使用DBMS=Excel的时候,可以导入,但仅导入255列的数据。根据网上的说明,这应该是选择DBMS=Excel造成的。

PROC IMPORT OUT= SNC.NCFOP08

            DATAFILE= "C:\Users\giant\OneDrive\SAS\SNC\POR8\NCFOP02 20231221.xlsx"

            DBMS=EXCEL REPLACE;

     SHEET="Sheet1";

     GETNAMES=YES;

     MIXED=NO;

     SCANTEXT=YES;

     USEDATE=YES;

     SCANTIME=YES;

RUN;


11   PROC IMPORT OUT= SNC.NCFOP08

12               DATAFILE= "C:\Users\giant\OneDrive\SAS\SNC\POR8\NCFOP02 20231221.xlsx"

13               DBMS=EXCEL REPLACE;

14        SHEET="Sheet1";

15        GETNAMES=YES;

16        MIXED=NO;

17        SCANTEXT=YES;

18        USEDATE=YES;

19        SCANTIME=YES;

20   RUN;


NOTE: SNC.NCFOP08 data set was successfully created.

NOTE: The data set SNC.NCFOP08 has 279 observations and 255 variables.

NOTE: PROCEDURE IMPORT used (Total process time):

      real time           5.19 seconds

      cpu time            0.40 seconds



按照网上的介绍,改为DBMS=XLSX,应该能解决这个问题,但是执行后,却报错。见下


1    PROC IMPORT OUT= SNC.NCFOP08

2                DATAFILE= "C:\Users\giant\OneDrive\SAS\SNC\POR8\NCFOP02 20231221.xlsx"

3                DBMS=xlsx REPLACE;

NOTE: The previous statement has been deleted.

NOTE: The previous statement has been deleted.

NOTE: The previous statement has been deleted.

4         SHEET="Sheet1";

NOTE: The previous statement has been deleted.

5         GETNAMES=YES;

6         MIXED=NO;

          -----

          180

7         SCANTEXT=YES;

          --------

          180

8         USEDATE=YES;

          -------

          180

9         SCANTIME=YES;

          --------

          180

ERROR 180-322: Statement is not valid or it is used out of proper order.


10   RUN;


NOTE: The SAS System stopped processing this step because of errors.

NOTE: PROCEDURE IMPORT used (Total process time):

      real time           0.20 seconds

      cpu time            0.00 seconds


请教大家,该如何处理,才能顺利完整导入这个xlsx文件。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:64位系统 EXCEL xcel exce cel

沙发
Rock2000 发表于 2024-1-9 17:38:57
修改的代码如下:
  1. PROC IMPORT OUT= SNC.NCFOP08

  2.             DATAFILE= "C:\Users\giant\OneDrive\SAS\SNC\POR8\NCFOP02 20231221.xlsx"
  3.    DBMS=XLSX REPLACE;
  4.     SHEET="Sheet1";
  5. RUN;
复制代码


藤椅
giantxu 发表于 2024-1-11 13:06:45
Rock2000 发表于 2024-1-9 17:38
修改的代码如下:
非常感谢,已经导入。

板凳
赵安豆 发表于 2024-6-7 16:30:33
要导入超过255列的Excel文件,你可以使用SAS的ODBC连接器。这样可以绕过Excel自身的限制。以下是修改后的PROC IMPORT语句:

```sas
PROC IMPORT OUT= SNC. NCFOP08
      DATAFILE= "C:\Users\giant\OneDrive\SAS\SNC\POR8\NCFOP02 20231221.xlsx"      
DBMS=ODBC REPLACE;
CONNECTION=ExcelSource;  /* 将ExcelSource替换为你的ODBC数据源名称 */
SHEET="Sheet1";
GETNAMES=YES;
MIXED=NO;
SCANTEXT=YES;
USEDATE=YES;
SCANTIME=YES;
RUN;
```

请确保你已经设置了指向Excel文件的ODBC数据源。如果还没有设置,可以按照以下步骤操作:

1. 打开“控制面板”。
2. 选择“系统和安全”下的“管理工具”。
3. 在打开的窗口中双击“ODBC 数据源管理器”。
4. 在ODBC数据源管理器中,点击“用户DSN”选项卡。
5. 点击“添加”按钮,选择Microsoft Excel Driver,然后点击“完成”。
6. 在弹出的数据源名称(DSN)窗口中输入一个描述性的名称,比如"ExcelSource",然后点击“确定”。
7. 最后在ODBC数据源管理器中,确认你的DSN已经列出,这样就可以在SAS中使用这个数据源了。

设置好ODBC数据源并按照上述修改PROC IMPORT语句后,你应该可以导入超过255列的Excel文件了。如果还有问题,请随时提问。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-18 05:04