Oct-10-2022, 02:43 AM
(This post was last modified: Oct-12-2022, 08:28 AM by Pedroski55.)
This Excel file contains some names containing X or x in column 2 and some None values in column 2 or 3
Before the Excel looks like this:
Before the Excel looks like this:
Output:>>> for row in sF[sFsheet].values:
print(row)
('id', 'name', 'Age')
(1, 'Peter', 1)
(2, 'Xavier', 2)
(3, 'George', 3)
(4, None, None)
(5, 'Peggy-Sue', 4)
(6, 'Xander', 5)
(7, 'Legolas', 6)
(8, 'Happy', 7)
(9, None, None)
(10, 'Fatty', 8)
(11, 'Sox', 9)
(12, 'Justin', 10)
This deletes rows containing a name in which the letters X or x appeardef myApp(): path2XL = '/home/pedro/myPython/openpyxl/xlsx_files/' file = 'some_X_or_x_in_column_2.xlsx' sF = openpyxl.load_workbook(path2XL + file) sFsheets = sF.sheetnames sFsheet = sFsheets[0] sFmaxRow = sF[sFsheet].max_row # open a new XL name = file.split('.') savename = name[0] + '_modified.xlsx' newXL = openpyxl.Workbook() sheets = newXL.sheetnames sheet = sheets[0] # before for row in sF[sFsheet].values: print(row) # you can choose the rows and columns you want to iterate # for row in sF[sFsheet].iter_rows(min_row=1, min_col=1, max_row=6, max_col=2): # look through column 2 # if a name contains X or x delete that row # row[1] is the value in column 2 of the XL # if there is an X or x in a header name, the headers row will be gone! Fix that! for row in sF[sFsheet].iter_rows(): if row[1].value == None: continue if 'X' in row[1].value or 'x' in row[1].value: sF[sFsheet].delete_rows(row[0].row) # after for row in sF[sFsheet].values: print(row) sF.save(path2XL + savename)