Estou procurando uma maneira de converter rapidamente um diretório de arquivos .csv para o formato .xls ou .xlsx (seria bom se eu pudesse fazer um ou outro).
Existe uma maneira fácil de fazer isso ou preciso instalar um programa de terceiros?
Estou procurando uma maneira de converter rapidamente um diretório de arquivos .csv para o formato .xls ou .xlsx (seria bom se eu pudesse fazer um ou outro).
Existe uma maneira fácil de fazer isso ou preciso instalar um programa de terceiros?
Respostas:
Supondo que você goste e possua Python (por algum motivo), você pode usar este script que eu criei:
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')
Corrido no diretório com todos os arquivos CSV, ele irá convertê-los todos e colocar um ".xls" no final.
Para o Excel 2007+ (arquivos xlsx) com suporte para cerca de 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')
Ainda resta muito a dizer na sua pergunta.
Supondo que seus arquivos CVS estejam em uma estrutura de diretórios semelhante a
c:\randompath\CSV\
a.csv
b.csv
c.csv
:
:
z.csv
e você quer acabar com
c:\randompath\XLS\
a.xls
b.xls
c.xls
:
:
z.xls
Posso pensar em três rotas a seguir, dependendo da proporção entre o trabalho inicial e o trabalho de limpeza que você deseja fazer.
Observe que eu não escrevi nenhum código para fazer essas coisas (ainda) estou apenas oferecendo idéias para um ponto de partida. Talvez se você pudesse dar mais detalhes sobre o que deseja, poderia obter explicações mais detalhadas sobre como lidar com a abordagem de mim ou de outro membro do fórum.
Para Windows? A versão da linha de comando do CoolUtils " Total CSV Converter " suporta muitos formatos de saída, incluindo JSON, Access, DBF, XML e SQL e custa apenas US $ 40. Ele pode recolocar subdiretórios, excluir arquivos CSV originais, combinar todos os arquivos em um documento e muito mais.
http://www.coolutils.com/TotalCSVConverter
CSVConverter.exe <source> <destination> <options>
O " Advanced CSV Converter " (US $ 40-200) é um EXE portátil que pode fazer isso rapidamente e sem que o Excel precise ser instalado.
http://www.dbf2002.com/csv-converter/commandline.html
"c:\Program Files\CSV Converter\csvcnv.exe" c:\base\*.csv c:\exports\ /TOXLSX /SRCHDR
O " Convert XLS " do SoftInterface pode usar o Excel (mas não é obrigatório) e é mais caro (mais de US $ 500), mas suporta mais formatos e tem mais opções.
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 " é um programa de planilha de código aberto que pode executar uma conversão direta, mas foi descontinuado para Windows em agosto de 2014.
ssconvert file.csv file.xlsx
Se você possui o Python instalado, " csv2odf " é uma opção de código aberto e usa uma abordagem de modelo para gerar arquivos ods, odt, html, xlsx ou docx.
http://sourceforge.net/projects/csv2odf/
csv2odf data.csv template.odt output.xlsx
Com o Nó 8+ e o bash:
npm install -g pguardiario/csv2xlsx
for file in *.csv; do csv2xlsx "$file"; done