2017-09-13 1 views
1

En ce moment je travaille sur la combinaison de feuilles Excel dans 1 nouvelle feuille, en utilisant des pandas qui fonctionne. Le seul problème est que la valeur dans la nouvelle feuille Excel sont des nombres simples au lieu des formules et je voudrais les formules.Est-il possible de copier la formule Excel d'une cellule au lieu de la valeur en utilisant python?

fichier Chargement

directory = os.path.dirname(__file__) 
fname = os.path.join(directory, "Reisanalyze.xlsm") 
print("Loading %s..." % fname) 
sheet1 = pd.read_excel(fname, sheetname="Input") 
sheet2 = pd.read_excel(fname, sheetname="Alternatieven") 

Ecrire à la nouvelle feuille

writer = pd.ExcelWriter('first_sheet.xlsx', engine='xlsxwriter')`** 
sheet1.to_excel(writer, sheet_name='Input', merge_cells=False, startrow=0, startcol=0) 
    sheet2.to_excel(writer, sheet_name='Input', merge_cells=False, startrow=0, startcol=21) 

Edit: Je l'origine essayé d'utiliser le projet pycel qui a travaillé jusqu'à ce que je devais charger plusieurs feuilles qui n'ont pas fonctionné, c'est pourquoi j'utilise des pandas pour écrire plusieurs feuilles i nto 1 feuille.

+0

Veuillez publier un code spécifique minimal qui effectue votre accès, ainsi que des informations d'arrière-plan. –

+1

Si vous choisissez d'utiliser le module openpyxl, vous avez la possibilité de charger les formules ou la dernière valeur calculée dans le fichier. Ouvrir le fichier en mode par défaut mettra ce drapeau à False et ainsi vous aurez accès aux formules. Source: http://openpyxl.readthedocs.io/fr/default/usage.html – BoboDarph

Répondre

2

Vous pouvez utiliser OpenPyXL. Lire here

Voici le test fichier Excel testexl.xlsx

A  | B 
---------- | ------ 
=SUM(B1:B2)| 1 
      | 2 

Voici le code de test

from openpyxl import load_workbook 
import pandas as pd 
wb = load_workbook(filename = 'testexl.xlsx') 
sheet_names = wb.get_sheet_names() 
name = sheet_names[0] 
sheet_ranges = wb[name] 
df = pd.DataFrame(sheet_ranges.values) 
print df 

de sortie

0   1 
0 =SUM(B1:B2) 1 
1 None  2 
+0

Merci! Cela a fonctionné. –

1

Si vous voulez conserver les formules Excel, alors vous devrez les empêcher d'être des formules et ensuite les convertir après. Pour ce faire, avant la conversion, sur votre clavier, faites control/command + F puis un menu devrait apparaître au milieu de l'écran puis cliquez sur l'onglet de remplacement. Dans le champ "find What:" tapez "=" et dans la zone "replace with:" tapez ". =". Ensuite, remplacez tous. Cela convertira les formules en texte à copier.

Enregistrer sous forme de fichier csv

Note: Je sais que cela va également remplacer signes = à l'intérieur de la formule. Cela n'a pas d'importance, ça va aller. Après les fusionner, ouvrez-le de nouveau dans Excel, répétez-le, mais à l'envers pour les convertir en formules.

Cela peut être plus facile que d'importer des modules supplémentaires.

+1

La raison pour laquelle je ne veux pas faire cela, c'est parce que je ne veux pas changer manuellement les formules/cellules dans Excel. Je veux le changer avec python. Merci pour la contribution si. –