J'ai été bloqué pendant un moment en essayant d'étendre les numéros de ligne dans Excel en utilisant OpenPyxl et xlsxwriter.Ajouter des lignes avec des données et après la cellule correspondante
Maintenant mon dossier ressemble à:
Et je dois ajouter une autre donnée, ce qui correspond à la forme et déplacer tout vers le bas, il ressemblera à ceci:
J'ai mes données ['a', 'b', 'c'] stockées sous forme de liste. Ai-je besoin d'utiliser un dictionnaire à la place? Ou une approche facile?
Pour l'instant mon code ressemble:
from openpyxl import load_workbook
from openpyxl import Workbook
import xlsxwriter
import collections
INPUT_FILE = 'output.xlsx'
wb = load_workbook(filename=INPUT_FILE)
ws = wb['cond']
workbook = xlsxwriter.Workbook('data.xlsx')
worksheet = workbook.add_worksheet()
def get_data(start, stop, col):
mylist = [ws.cell(row=i,column= col).value for i in range(start,stop)]
findings = [v for i,v in enumerate(mylist) if mylist.index(v) == i]
return findings
def get_data_row(start, stop, row):
mylist = [ws.cell(row = row, column = i).value for i in range(start, stop)]
values = [v for i,v in enumerate(mylist) if mylist.index(v) == i]
return values
def write_from_dict(row, col, dict):
row = row
col = col
for key in dict.keys():
worksheet.write(row, col, key)
for item in dict[key]:
worksheet.write(row, col + 1, item)
row += 1
if __name__ == '__main__':
mammo_findings_list = get_data(2,10, 11)
us_findings_list = get_data(10, 17, 11)
mri_findings_list = get_data(17, 27, 11)
mammo_params_list = [get_data(2, 5, 14), get_data(5,8,14),
get_data(8, 9, 14), get_data(9,10, 14)]
mammo_data = dict(zip(mammo_findings_list,mammo_params_list))
mammo = write_from_dict(1, 1, mammo_data)
shape_val = get_data_row(15, 19, 2)
margin_val = get_data_row(15, 19, 3)
density_val = get_data_row(15, 19, 4)
mass_dict = dict(zip(mammo_params_list[0],shape_val,margin_val,density_val]))
print(mass_dict)
test = write_from_dict(1,2,mass_dict) #eventually didn't work for me now
workbook.close()
sortie Dictionnaire:
{'Shape': ['Oval, Round', None, 'Irregular'], 'Margin': ['Circumscribed', None, 'Obscured, Microlobulated, Indistinct, Spiculated'], 'Density': ['High density', 'Equal density, Low density', None]}
{'Mass': ['Shape', 'Margin', 'Density'], 'Calcifications': ['Typically benign', 'Suspicious morphology', 'Distribution'], 'Assymetry': ['Assymetry'], 'Lymph nodes': ['Lymph nodes']}
Et je dois juste ajouter/fusionner ces données en quelque sorte et écrire tout à Excel en même temps.
Merci!
À quoi ressemble votre code pour le moment? –
@CharlieClark éditée post. –
Merci. Une raison pour laquelle vous utilisez les deux bibliothèques? openpyxl devrait être capable de faire tout ce dont vous avez besoin. –