Python convertir csv a xlsx

En esta publicación hay un ejemplo de Python para convertir de csv a xls.

Sin embargo, mi archivo tiene más de 65536 filas, por lo que xls no funciona. Si nombro el archivo xlsx no hace una diferencia. ¿Hay un paquete de Python para convertir a xlsx?

Aquí hay un ejemplo usando xlsxwriter :

import os import glob import csv from xlsxwriter.workbook import Workbook for csvfile in glob.glob(os.path.join('.', '*.csv')): workbook = Workbook(csvfile[:-4] + '.xlsx') worksheet = workbook.add_worksheet() with open(csvfile, 'rt', encoding='utf8') as f: reader = csv.reader(f) for r, row in enumerate(reader): for c, col in enumerate(row): worksheet.write(r, c, col) workbook.close() 

Para su información, también hay un paquete llamado openpyxl , que puede leer / escribir archivos Excel 2007 xlsx / xlsm.

Espero que ayude.

Con mi biblioteca pyexcel ,

  $ pip install pyexcel pyexcel-xlsx 

Puedes hacerlo en una línea de comando:

 from pyexcel.cookbook import merge_all_to_a_book # import pyexcel.ext.xlsx # no longer required if you use pyexcel >= 0.2.2 import glob merge_all_to_a_book(glob.glob("your_csv_directory/*.csv"), "output.xlsx") 

Cada csv tendrá su propia hoja y el nombre será su nombre de archivo.

Agregar una respuesta que utiliza exclusivamente la biblioteca de pandas para leer en un archivo .csv y guardar como un archivo .xlsx. Este ejemplo hace uso de pandas.read_csv ( Enlace a documentos ) y pandas.dataframe.to_excel ( Enlace a documentos ).

El ejemplo completamente reproducible usa numpy para generar solo números aleatorios, y esto puede eliminarse si desea usar su propio archivo .csv.

 import pandas as pd import numpy as np # Creating a dataframe and saving as test.csv in current directory df = pd.DataFrame(np.random.randn(100000, 3), columns=list('ABC')) df.to_csv('test.csv', index = False) # Reading in test.csv and saving as test.xlsx df_new = pd.read_csv('test.csv') writer = pd.ExcelWriter('test.xlsx') df_new.to_excel(writer, index = False) writer.save() 
 from openpyxl import Workbook import csv wb = Workbook() ws = wb.active with open('test.csv', 'r') as f: for row in csv.reader(f): ws.append(row) wb.save('name.xlsx') 

Como lo hago con openpyxl lib:

 import csv from openpyxl import Workbook def convert_csv_to_xlsx(self): wb = Workbook() sheet = wb.active CSV_SEPARATOR = "#" with open("my_file.csv") as f: reader = csv.reader(f) for r, row in enumerate(reader): for c, col in enumerate(row): for idx, val in enumerate(col.split(CSV_SEPARATOR)): cell = sheet.cell(row=r+1, column=idx+1) cell.value = val wb.save("my_file.xlsx") 

Hay una forma sencilla

 import os import csv import sys from openpyxl import Workbook reload(sys) sys.setdefaultencoding('utf8') if __name__ == '__main__': workbook = Workbook() worksheet = workbook.active with open('input.csv', 'r') as f: reader = csv.reader(f) for r, row in enumerate(reader): for c, col in enumerate(row): for idx, val in enumerate(col.split(',')): cell = worksheet.cell(row=r+1, column=c+1) cell.value = val workbook.save('output.xlsx')