write read example python excel file csv xlsx

example - read csv python pandas



Python convierte csv en xlsx (6)

Agregar una respuesta que utiliza exclusivamente la biblioteca 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 totalmente reproducible usa numpy para generar números aleatorios solamente, y esto se puede eliminar 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()

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 la 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()

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

Espero que ayude.


Cómo 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")


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.


Hay una manera simple

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


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