2017-08-30 1 views
0

SO, mon problème est le suivant:Comment extraire des cellules formatées et leurs lignes correspondantes dans Excel

utilisant ce script écrit ci-dessous, je l'ai formaté avec succès certaines cellules dans la feuille Excel extraite. Il est destiné à accepter n'importe quel fichier Excel tant qu'il est correctement entré et qu'il est dans le même format (qui sera toujours dans le même format).

Ma prochaine étape (mon problème): comment saisir les cellules qui ont été formatées et les lignes correspondantes, puis imprimer ces lignes dans un nouveau fichier. En utilisant un programme très similaire, je suis capable de prendre le fichier excel formaté choisi. Mais ne sais pas ce que mon cours

def ready(): 

    print("Type the name of the excel file you wish to analyze.") 

    while True: 
     try: 
      a_input = input(">> ") 

      df = pd.read_excel("{}".format(a_input), parse_cols = "AS") 

      df2 = pd.read_excel("{}".format(a_input), parse_cols = "B") 

      df3 = pd.read_excel("{}".format(a_input), parse_cols = "A") 

      df4 = pd.read_excel("{}".format(a_input), parse_cols = "D") 

      df5 = pd.read_excel("{}".format(a_input), parse_cols = "C") 

     except IOError: 
      print("The file name was either entered incorrectly or is not in the directory") 

     else: 
      print("--------------------File Grab Successful--------------------") 
      break 

    time.sleep(2) 

    print("Grabbing the required data.....\n\n") 

    df.set_index('Last Date of Support', inplace=True) 

    df2.set_index('Product Series', inplace=True) 

    df3.set_index('Product Family', inplace=True) 

    df4.set_index('Item Name', inplace=True) 

    df5.set_index('Item Type', inplace=True) 

    time.sleep(2) 

    print("--------------Creating Excel Document with required data------------------\n\n") 

    time.sleep(2) 

    print("Type the name you want for the excel file that will be created. Be sure to add the file extension on the end (EX: filename.xlsx)") 

    b_input = input(">> ") 

    writer = pd.ExcelWriter('{}'.format(b_input), engine='xlsxwriter') 

    df.to_excel(writer, sheet_name='Sheet1', startrow=-1, startcol=0) 

    df2.to_excel(writer, sheet_name='Sheet1', startrow=-1, startcol=4) 

    df3.to_excel(writer, sheet_name='Sheet1', startrow=-1, startcol=2) 

    df4.to_excel(writer, sheet_name='Sheet1', startrow=-1, startcol=3) 

    df5.to_excel(writer, sheet_name='Sheet1', startrow=-1, startcol=1) 

    workbook = writer.book 

    worksheet = writer.sheets['Sheet1'] 

    date = datetime.datetime.strptime('2018-01-01', "%Y-%m-%d") 

    format1 = workbook.add_format({'bg_color': '#FFC7CE', 
            'font_color': '#9C0006'}) 

    worksheet.conditional_format('A2:A20000', {'type': 'date', 
               'criteria': 'less than', 
               'value': date, 
               'format': format1}) 

    writer.save() 

    print("Goodbye!") 

    time.sleep(5) 

ready() 

L'utilisation d'un programme très similaire, je suis en mesure de prendre le fichier Excel au format choisi. Mais je ne sais pas ce que mon plan d'action serait. Voici un exemple de ce que j'ai essayé.

format1 = workbook.add_format({'bg_color': '#FFC7CE', 
            'font_color': '#9C0006'}) 

    for i in df == format1: 
     print(i) 

Mais je continue d'obtenir une erreur.

Désolé pour le poste de rédaction, J'ai cliqué sur avance avant d'avoir terminé.

+0

quelle erreur obtenez-vous? – splinter

+0

i n'est pas défini –

Répondre

0

La boucle que vous avez écrite est incorrecte. En effet, df==format1 est équivalent au booléen True. Si vous souhaitez imprimer i uniquement lorsque certaines conditions sont remplies, faites:

upperBound = 1000 
for i in range(upperBound): 
    if df==format1: 
     print(i) 
+0

Malheureusement ceci est toujours incorrect car l'erreur que je reçois maintenant est: TypeError: int() argument doit être une chaîne, un objet semblable à un octet ou un nombre, pas 'Format –

+0

dans quelle ligne? parce que dans le code que vous avez posté, vous n'appelez pas la fonction 'int()'. – splinter

+0

L'erreur de type spécifie l'erreur sur la boucle. AKA revient à cette ligne –