# print the values of the first row for cell in sheet[1]: print(cell.value) Appointment Date Patient ID Age Gender Diagnosis Doctor Visit Type Appointment Duration Consultation Fee Insurance Provider Is Follow-up Needed?
删除缺少患者 ID 的行
在我们的 Excel 文件中,有些行不包含患者 ID。创建一个函数来删除这些条目。
我们创建一个以 OpenPyXL 工作表对象为参数的函数。
sheet.iter_rows()
会生成工作表中所有行的可迭代行。
然后检查第二个值(患者 ID 为空)
row[1].value == None
。
然后,
delete_rows()
方法会删除
row[0].row
返回的索引号上的行。
# delete row with missing value in the column 'PatientId' def delete_missing_patient_id_rows(sheet): for row in sheet.iter_rows(): if row[1].value == None: sheet.delete_rows(row[0].row)
def apply_currency_format(sheet): for row in sheet.iter_rows(): if row[8].value is not None: # Set the number format to Euro currency row[8].number_format = '€#,##0.00'
# Function adds new column to def add_column(sheet, column_name): sheet.insert_cols(11) sheet['K1'] = column_name for row in sheet.iter_rows(min_row=2): if row[9].value == 'None': row[10].value = 'No' else: row[10].value = 'Yes'
条件格式化:突出显示复诊患者
为了便于发现复诊患者,我们将用绿色高亮显示这些行。下面的函数可以做到这一点。
我们从第二行开始循环查看各行(跳过标题)。
如果第 12 列(
row[11]
)中的值为
True
,则表示已安排随访。
我们使用
PatternFill
对该行的每个单元格应用
绿色高亮
(
#FF77DD77
)。
# Follow up rows green def highlight_follow_ups(sheet): for row in sheet.iter_rows(min_row=2): if row[11].value == True: for cell in row: cell.fill = openpyxl.styles.PatternFill( start_color='FF77DD77', end_color='FF77DD77', fill_type='solid')
#在输入路径中查找以 .xlsx 结尾的文件 xlsx_file = [file for file in os.listdir(input_path) if
file.endswith('.xlsx')] workbook = openpyxl.load_workbook(input_path + "/"+ xlsx_file[0]) sheet = workbook.active
insurance_companies = sheet['J'] insurance_companies = set([cell.value for cell in insurance_companies]) for company in insurance_companies: new_workbook = openpyxl.Workbook() new_sheet = new_workbook.active new_sheet.title = company # 在新工作表中添加标题行,并标注公司名称
new_sheet.append([cell.value for cell in sheet[1]]) # Copy the header for row in sheet.iter_rows(min_row=2): if row[9].value == company: new_sheet.append([cell.value for cell in row]) new_workbook.save(f'data/transformed/{company}.xlsx')
for file in os.listdir(input_path): if file.endswith('.xlsx'): file_path = os.path.join(input_path, file) workbook = openpyxl.load_workbook(file_path) sheet = workbook[sheet_name] if sheet_name else workbook.active