Импорт таблицы с неизвестной длиной из Excel .xlsm
Я хочу перенести таблицу из Excel в SAS (версия 9.2 и формат файла Excel.XLSM, макрос). Имена столбцов будут считаны из ячейки B3, а данные начнутся с ячейки B4, как показано ниже:
A B C D E F G ...
1
2
3 Col1 Col2
4 15 20
5 16 21
6 ... ...
Проблема в том, что номер последней строки неизвестен, потому что длина таблицы сегодня может быть 200 строк, а завтра - 350 строк.
Так как же импортировать эту таблицу из Excel (.XLSM) в SAS-таблицу?
Я где-то читал, что мы можем использовать DATAROW
в Proc Import
когда DBMS=EXCEL
как ниже:
proc import datafile = "!datafile" out=Table1 DBMS = EXCEL REPLACE;
SHEET = "Sheet1"; GETNAMES=YES; MIXED=YES; USEDATE=YES; SCANTIME=YES; NAMEROW=3; DATAROW=4;
run;
Однако SAS не может распознать DATAROW
вариант, дающий ошибку:
ОШИБКА 180-322: оператор недействителен или используется не по порядку.
Существует еще один способ импорта таблицы из Excel, например:
PROC SQL;
CONNECT TO EXCEL (PATH='C:\\thepath\excelfile.xlsm');
Create Table Table1 as SELECT * FROM CONNECTION TO EXCEL
(SELECT * FROM [Sheet1$]);
DISCONNECT FROM EXCEL;
QUIT;
Кто-нибудь знает, как экспортировать таблицу с неизвестным количеством строк из.XLSM в SAS?
2 ответа
Я нашел "неэффективное" альтернативное решение, которое считывает все возможные строки в Excel (читает 50 000 строк), в то же время проверяет каждую строку под столбцом. Col1
если эти строки имеют значение.
Это занимает 7-8 секунд, и это работает. Но, как я уже писал, чтение 50 000 строк кажется неэффективным. У кого-нибудь есть идея получше?
PROC SQL;
CONNECT TO EXCEL (PATH='C:\\thepath\excelfile.xlsm');
Create Table Table1 as SELECT * FROM CONNECTION TO EXCEL
(SELECT * FROM [Sheet1$B3:C50000] WHERE Col1 IS NOT NULL);
DISCONNECT FROM EXCEL;
QUIT;
Вы можете использовать прямое соединение с Excel, используя libname
заявление:
libname xlsFile Excel 'C:\\thepath\excelfile.xlsm';
data want;
set xlsFile.'Sheet1$'n(firstobs=3);
where NOT missing(Col1);
run;
Предполагается, что на сервере SAS установлен Excel и вы приобрели файлы SAS/ACCESS to PC Files.