it-swarm.com.de

Python csv in xlsx konvertieren

In diesem Beitrag gibt es ein Python Beispiel zum Konvertieren von CSV nach XLS.

Meine Datei enthält jedoch mehr als 65536 Zeilen, sodass xls nicht funktioniert. Wenn ich die Datei xlsx nenne, macht das keinen Unterschied. Gibt es ein Python - Paket, das nach xlsx konvertiert werden soll?

36
user670186

Hier ist ein Beispiel mit 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()

Zu Ihrer Information gibt es auch ein Paket namens openpyxl , das Excel 2007 xlsx/xlsm-Dateien lesen/schreiben kann.

Hoffentlich hilft das.

66
alecxe

Mit meiner Bibliothek pyexcel,

 $ pip install pyexcel pyexcel-xlsx

sie können es in einer Befehlszeile tun:

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

Jede CSV hat ein eigenes Blatt und der Name ist der Dateiname.

27
chfw
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')
7
zhuhuren

Hinzufügen einer Antwort, die ausschließlich die Bibliothek pandas= verwendet, um eine CSV-Datei einzulesen und als XLSX-Datei zu speichern. In diesem Beispiel wird pandas.read_csv ( Link zu docs ) und pandas.dataframe.to_Excel ( Link zu docs ).

In dem vollständig reproduzierbaren Beispiel wird numpy nur zum Generieren von Zufallszahlen verwendet. Dies kann entfernt werden, wenn Sie Ihre eigene CSV-Datei verwenden möchten.

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()
6
patrickjlong1

Wie mache ich das mit 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")
4
Rubycon

Es gibt einen einfachen Weg

import os
import csv
import sys

from openpyxl import Workbook

reload(sys)
sys.setdefaultencoding('utf8')

if __== '__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')
0
David Ding