xls2csv и xls2tsv в одном флаконе ;)
Вот простая функция, которая конвертирует файл Excel в CSV:
def xls2csv(xls_file,csv_file,input_encoding,output_encoding,separator):
data=[]
for sheet_name, values in parse_xls(xls_file, input_encoding): # parse_xls(arg) -- default encoding
matrix = [[]]
for row_idx, col_idx in sorted(values.keys()):
v = values[(row_idx, col_idx)]
if isinstance(v, unicode):
v = v.encode(output_encoding, 'backslashreplace')
else:
v = str(v)
last_row, last_col = len(matrix), len(matrix[-1])
while last_row < row_idx:
matrix.extend([[]])
last_row = len(matrix)
while last_col < col_idx:
matrix[-1].extend([''])
last_col = len(matrix[-1])
matrix[-1].extend([v])
for row in matrix:
csv_row = separator.join(row)
#print csv_row
data.append(csv_row+'\n')
outfile = open(tsv_file, 'w')
for i in data:
outfile.write(i)
#print tsv_file
#print 'i=',i
#print
outfile.close()
Для использования этой функции нужно задать в качестве параметров xls_file и сsv_file соответственно путь к исходному и новому файлам, input_encoding output_encoding - кодировка этих файлов (например 'cp1251' и 'utf-8'), separator - разделитель данных в получаемом csv, например запятая: ',' или знак табуляции '\t' (в этом случае, вообще говоря, это будет уже не csv, а tsv файл). Здесь используется библиотека pyExcelerator. В Ubuntu ee можно установить следующим образом: sudo apt-get install python-excelerator
Альтернативные варианты
Теоретически для преобразования xls в csv можно также использовать библиотеки xlrd и xlwrt.Также в Ubuntu можно использовать программу xls2csv из пакета catdoc, но к сожалению xls2csv из catdoc не умеет использовать табулятор в качестве разделителя и к тому же она не очень хорошо отлажена и иногда дает сбои.
Комментариев нет:
Отправить комментарий