Como converter em lote .csv para .xls / xlsx

10

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 eu preciso instalar um programa de terceiros?

    
por mindless.panda 24.06.2011 / 02:21

5 respostas

20

Supondo que você goste e tenha Python (por algum motivo), você pode usar esse script que eu inventei:

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')

Corri no diretório com todos os arquivos CSV, ele converterá todos eles e colocará um ".xls" no final.

Para o Excel 2007+ (arquivos xlsx) com suporte para até 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')
    
por 24.06.2011 / 03:37
1

Aqui é um script perl que supostamente faz isso, mas parece muito trabalho fazer algo que já está embutido no Excel.

    
por 24.06.2011 / 03:00
1

Há muito que não foi dito em sua pergunta.

Supondo que seus arquivos CVS estão 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

Eu posso pensar em três rotas para ir, dependendo da proporção de trabalho inicial para o trabalho de limpeza que você está disposto a fazer.

  1. Sem codificação: Use o Windows Explorer para navegar até os arquivos CSV. Use qualquer método que funcione melhor para selecionar os arquivos a serem convertidos (lasso, ctrl + a, ctrl + clique, shift + clique) e clique com o botão direito em um dos arquivos selecionados e clique em Abrir. Isso abrirá todos os arquivos no Excel. Em seguida, para cada arquivo, você pode selecionar "Arquivo" e "Salvar como" e, finalmente, escolher o novo formato de arquivo que deseja salvar.
  2. Um arquivo em lote simples: Esse arquivo em lote pode usar curingas e / ou um para cada estrutura de loop para abrir cada um dos arquivos CSV e, em seguida, você pode processá-los manualmente como antes.
  3. Crie um programa VBA em uma planilha do Excel: O VBA pode abrir automaticamente cada arquivo CSV e, em seguida, salvá-lo em um formato do Excel. Você pode até adicionar uma caixa de mensagem simples que oferece uma opção de xls ou xlsx à medida que cada arquivo é aberto.

Note 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 você quer, você poderia obter explicações mais detalhadas sobre como lidar com a abordagem de mim ou de outro membro do fórum.

    
por 24.06.2011 / 03:30
0

Para o Windows? CoolUtils " Total CSV Converter " versão de linha de comando suporta muitos formatos de saída incluindo JSON, Access, DBF, XML & SQL e é apenas $ 40. Ele pode recriar subdiretórios, excluir arquivos CSV originais, combinar todos os arquivos em um documento e muito mais.

link

CSVConverter.exe <source> <destination> <options>

" Advanced CSV Converter " (US $ 40-200) é um EXE portátil que pode ser executado rapidamente e sem que o Excel precise ser instalado.

link

"c:\Program Files\CSV Converter\csvcnv.exe" c:\base\*.csv c:\exports\ /TOXLSX /SRCHDR

O SoftInterface " Converter XLS " pode usar o Excel (mas não é obrigatório) e é mais caro (US $ 500+), mas suporta mais formatos e tem mais opções.

link

"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 realizar uma conversão direta, mas foi descontinuado para o Windows em agosto de 2014.

link

ssconvert file.csv file.xlsx

Se você tem o Python instalado, " csv2odf " é uma opção de código aberto e usa uma abordagem padronizada para gerar arquivos ods, odt, html, xlsx ou docx.

link

csv2odf data.csv template.odt output.xlsx
    
por 09.12.2015 / 16:27
-1

A maneira fácil: abra o arquivo csv do Microsoft Excel, converta o texto em colunas (selecione as células / texto, clique em Menu - Dados - Texto para Colunas) defina sua opção para converter.

    
por 05.05.2015 / 16:25