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 не умеет использовать табулятор в качестве разделителя и к тому же она не очень хорошо отлажена и иногда дает сбои.
Комментариев нет:
Отправить комментарий