3 votes

importer csv vers xlsx en python

J'essaie de transférer des données d'un fichier csv vers un fichier Excel existant. Mon fichier Excel existant contient des images et xlrd ne peut pas les récupérer. J'essaie d'utiliser xlsxwriter mais il ne peut pas ajouter au xslx existant. La seule solution que j'ai trouvée est d'utiliser openpyxl.

import openpyxl
xfile = openpyxl.load_workbook('my_exist_file')
sheet = xfile.get_sheet_by_name('Sheet1')
with open("my_csv", 'rb') as f:
    reader = csv.reader(f)
    for r, row in enumerate(reader):
        for c, col in enumerate(row):
           -here is my problem- 

Comment puis-je écrire les données csv (qui sont un tableau) à un endroit spécifique dans le xslx existant ? Je veux que mon tableau commence à la cellule K2.

Merci !

0voto

Ketan Mukadam Points 731

Utilisez la méthode de cellule de la feuille de calcul pour mettre à jour une cellule spécifique.

sheet.cell(row=<row>, column=<col>, value=<val>)

C'est généralement une bonne idée d'utiliser keep_vba=True pendant le chargement du classeur. Vérifiez la page d'aide pour plus de détails.

Vérifiez également réponse à cette question.

0voto

Maarten Fabré Points 5020

Lecture du CSV

en utilisant pandas.read_csv pour extraire l'information

import pandas as pd
df = pd.read_csv(my_filename)

Options que vous pourriez avoir à spécifier

  • sep : quel séparateur est utilisé
  • codage
  • tête : La première ligne est-elle une ligne d'étiquettes ?
  • index_col : la première colonne est-elle un index ?

ajouter à une feuille de calcul excel

inspiré par : https://stackoverflow.com/a/20221655/1562285 vérifier le pandas.to_excel documentation pour d'autres options possibles

book = load_workbook(old_filename)
sheet_name = 'Sheet1'
with pd.ExcelWriter(new_filename, engine='openpyxl')  as writer:

    writer.book = book
    writer.sheets = dict((ws.title, ws) for ws in book.worksheets)

    df.to_excel(writer, sheet_name=sheet_name, startrow=1, startcol=10, engine='openpyxl')

Les champs startrow et startcol indiquent l'endroit de la feuille de calcul où vous souhaitez coller vos données.

Cette méthode risque d'écraser le contenu précédent de cette feuille de calcul. Si c'est le cas, vous devrez boucler sur les colonnes et les lignes du DataFrame et les ajouter semi-manuellement à la feuille de calcul.

Insertion d'images

Si vous avez les images à insérer quelque part à l'extérieur, vous pouvez utiliser le code de l'élément suivant documentation

    from openpyxl.drawing.image import Image
    ws = book['sheet_name_for_images']
    ws['A1'] = 'You should see three logos below'
    img = Image('logo.png')

    # add to worksheet and anchor next to cells
    ws.add_image(img, 'A1')

Je ne l'ai pas testé, et il se peut que vous deviez insérer ce code avant le code d'accès à l'information. writer.sheets = ...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X