Я ищу способ быстро преобразовать каталог файлов .csv в формат .xls или .xlsx (было бы неплохо, если бы я мог сделать или / или).
Есть ли простой способ сделать это или мне нужно установить стороннюю программу?
Я ищу способ быстро преобразовать каталог файлов .csv в формат .xls или .xlsx (было бы неплохо, если бы я мог сделать или / или).
Есть ли простой способ сделать это или мне нужно установить стороннюю программу?
Предполагая, что вам нравится и у вас есть Python (по какой-то причине), вы можете использовать этот скрипт, который я написал:
import os
import glob
import csv
import xlwt # from http://www.python-excel.org/
for csvfile in glob.glob(os.path.join('.', '*.csv')):
wb = xlwt.Workbook()
ws = wb.add_sheet('data')
with open(csvfile, 'rb') as f:
reader = csv.reader(f)
for r, row in enumerate(reader):
for c, val in enumerate(row):
ws.write(r, c, val)
wb.save(csvfile + '.xls')
Запустив в каталог все файлы CSV, он преобразует их все и добавит «.xls» в конец.
Для Excel 2007+ (файлы xlsx) с поддержкой до 1 Mrows:
import os
import glob
import csv
import openpyxl # from https://pythonhosted.org/openpyxl/ or PyPI (e.g. via pip)
for csvfile in glob.glob(os.path.join('.', '*.csv')):
wb = openpyxl.Workbook()
ws = wb.active
with open(csvfile, 'rb') as f:
reader = csv.reader(f)
for r, row in enumerate(reader, start=1):
for c, val in enumerate(row, start=1):
ws.cell(row=r, column=c).value = val
wb.save(csvfile + '.xlsx')
Вот Perl-скрипт, который предположительно делает это, но кажется, что нужно сделать много работы для того, что уже встроено в Excel.
В вашем вопросе многое осталось недосказанным.
Предполагая, что ваши файлы CVS находятся в структуре каталогов, аналогичной
c:\randompath\CSV\
a.csv
b.csv
c.csv
:
:
z.csv
и вы хотите в конечном итоге
c:\randompath\XLS\
a.xls
b.xls
c.xls
:
:
z.xls
Я могу подумать о трех маршрутах, в зависимости от соотношения первоначальной работы и работы по уборке, которую вы готовы выполнить.
Обратите внимание, что я не написал никакого кода для этих вещей (пока), я просто предлагаю идеи для отправной точки. Возможно, если бы вы могли дать более подробную информацию о том, что вы хотите, вы могли бы получить более подробные объяснения того, как обращаться с подходом от меня или другого участника форума.
Для винды? Версия командной строки « Total CSV Converter » CoolUtils поддерживает множество форматов вывода, включая JSON, Access, DBF, XML и SQL, и стоит всего 40 долларов. Он может создавать подкаталоги, удалять оригинальные файлы CSV, объединять все файлы в один документ и многое другое.
http://www.coolutils.com/TotalCSVConverter
CSVConverter.exe <source> <destination> <options>
« Advanced CSV Converter » ($ 40-200) - это переносимый EXE-файл, который может сделать это быстро и без необходимости установки Excel.
http://www.dbf2002.com/csv-converter/commandline.html
"c:\Program Files\CSV Converter\csvcnv.exe" c:\base\*.csv c:\exports\ /TOXLSX /SRCHDR
« Преобразование XLS » SoftInterface может использовать Excel (но не обязательно) и стоит дороже ($ 500+), но поддерживает больше форматов и имеет больше возможностей.
http://www.softinterface.com/Convert-XLS/Convert-XLS.htm
"c:\Program Files (x86)\Softinterface, Inc\Convert XLS\ConvertXLS.exe" /V /S"c:\base\*.csv" /T"c:\exports\*.xlsx" /F6 /C51 /M2
« Gnumeric » - это программа для работы с электронными таблицами с открытым исходным кодом, которая может выполнять прямое преобразование, но она была прекращена для Windows в августе 2014 года.
ssconvert file.csv file.xlsx
Если у вас установлен Python, « csv2odf » является опцией с открытым исходным кодом и использует шаблонный подход для генерации файлов ods, odt, html, xlsx или docx.
http://sourceforge.net/projects/csv2odf/
csv2odf data.csv template.odt output.xlsx
Простой способ: откройте CSV-файл из Microsoft Excel, преобразуйте текст в столбцы (выберите ячейки / текст, нажмите Меню - Данные - Текст в столбцы) и выберите вариант преобразования.