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