Я преобразовал кучу csv-файлов в файлы excel с помощью xlwt. После этого мне нужно импортировать эти файлы excel в SAS (статистическое программное обеспечение).Импорт xlwt генерируемых файлов excel в SAS
С одной попытки SAS выдает сообщение об ошибке, указывающее, что формат файла недействителен.
Но когда я только открываю любой из сгенерированных файлов с помощью MS Excel и закрываю без каких-либо изменений и без сохранения файла, он успешно импортируется в SAS.
Я обнаружил, что MS Excel изменяет заголовок файла, добавляя туда текущее имя пользователя и обновляющий файл, измененный датой.
Интересно, есть ли возможность изменить файл двоичного файла excel, прежде чем сохранять его.
Update: Я использую xlwt версии 0.7.4, Python 2.7.3, SAS 9.3, Excel 2010, Windows 7 32бит.
Это часть моего кода, где я преобразовать CSV в Excel:
wb = xlwt.Workbook(encoding='latin-1')
ws = wb.add_sheet('Sheet1')
sourceCSV = csv.reader(open(files, 'rb'), delimiter=";")
for rowi, row in enumerate(sourceCSV):
for coli, value in enumerate(row):
ws.write(rowi, coli, value)
wb.save(xls_file)
Вот варианты используются с функцией импорта SAS:
...
DBMS=EXCEL REPLACE;
RANGE="Sheet1$";
GETNAMES=YES;
MIXED=NO;
SCANTEXT=YES;
USEDATE=YES;
SCANTIME=YES;
...
Это ошибка производит SAS:
ERROR: Connect: External table is not in expected format.
ERROR: Error in the LIBNAME statement.
Как вы используете SAS для доступа к файлу Excel? т.е.: расширение ODBC (примечание - я не использовал SAS с 2004 года!) –
В стороне - вам, вероятно, лучше просто импортировать CSV-данные в SAS –
Спасибо за ответ. Фактически, SAS используется статистиками, и поскольку они описали проблему с импортом файлов csv, SAS задает размер поля на основе первого исходного файла CSV. Если позже в документе есть более длинные строки в этом поле, SAS имеет проблемы с их обработкой. Файлы Excel импортируются с использованием языка запросов SAS, как я видел. Не уверен, что мое определение правильное. –