我使用 xlwt 将一堆 csv 文件转换为 excel 文件。之后,我需要将这些 excel 文件导入 SAS(统计软件)。
在第一次尝试时,SAS 会抛出一个错误,指出文件格式无效。
但是,当我只用 MS Excel 打开任何生成的文件并关闭而不做任何更改并且不保存文件时,文件会成功导入 SAS。
我发现 MS Excel 更改了文件头,在其中添加了当前用户名并更新了文件修改日期。
我想知道是否有可能在保存之前修改excel文件二进制头。
更新:我正在使用 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.