1
votes

Lorsque l'option d'importation du cadre de données et de l'en-tête est false, xlwings importe toujours l'en-tête

J'essaie d'importer des données à partir d'un dataframe pandas. Pour faciliter la manipulation du côté de l'utilisateur final, j'importe les données dans une table prédéfinie «Table1». Cette table contient déjà des en-têtes, j'essaie donc de ne pas les importer à partir du dataframe.

'''Paste Dataframe into Excel'''
wb.sheets['Data'].clear_contents
wb.sheets['Data'].range('Table1').value = df
wb.sheets['Data'].range('Table1').options(pd.DataFrame, index=False, header=False).expand().value

Cela se traduit actuellement par 2 lignes d'en-têtes dans mon tableau Excel. Est-ce que je manque de documentation sur une meilleure façon d'exporter ces données dans un tableau Excel approprié? Suis-je mal compris la fonction de l'option d'en-tête?


1 commentaires

Jetez un œil à la documentation ici: docs.xlwings.org/en/stable/ ... Vous devrez définir les options dans votre 2ème ligne de code, lorsque vous écrivez le dataframe


3 Réponses :


1
votes

Pandas a une méthode pour exporter le dataframe sous forme de table Excel avec beaucoup de paramètres.

your_dataframe.to_excel('document.xlsx') 

Consultez la documentation pour plus de détails: pandas.DataFrame.to_excel


0 commentaires

0
votes

J'ai rencontré ce même problème hier, la méthode .options doit être appliquée lors de l'insertion de la valeur. Faire cela a bien fonctionné pour moi:

wb.sheets['Data'].clear_contents
wb.sheets['Data'].range('Table1').options(index=False, header=False).value  = df
wb.sheets['Data'].range('Table1').options(pd.DataFrame).expand().value 

C'est aussi comment cela est montré dans la documentation xlwings.
https://docs.xlwings.org/en/stable/datastructures.html


0 commentaires

0
votes

Celui-ci fonctionnera peut-être mieux. Essayez:

wb.sheets['Data'].clear_contents
wb.sheets['Data'].range("A1").options(index=False,header=False).value = df
wb.sheets['Data'].range("A1").options(pd.DataFrame).expand()


4 commentaires

Les réponses au code uniquement sont déconseillées sur SO. veuillez expliquer pourquoi ce code "fonctionne mieux" et mettre en évidence pourquoi / comment il résout le problème d'OP


Merci! En fait, j'ai rencontré le même problème mais la solution ci-dessus n'a pas fonctionné pour moi. J'ai fait référence à la même documentation ici: xlwings.doc , et il s'avère que si la plage est définie sur "A1", l'en-tête aura disparu.


Faire référence à une réponse comme "ci-dessus" est ambigu ou probablement incorrect. Vous devez ajouter un lien vers tout article que vous souhaitez référencer. L'ordre des réponses change en fonction des paramètres de l'utilisateur, et il change au fil du temps à mesure que les réponses sont ajoutées, supprimées et votées. Vous pouvez edit pour ajouter des explications dans le corps de votre message. Vous pouvez obtenir le lien d'une réponse via le share sous le message.


Obtenez-le, merci!