使用python的openpyxl库 处理一个表格,计算时间差值

使用python的openpyxl库 处理一个表格,计算时间差值,第1张

使用python的openpyxl库 处理一个表格,计算时间差值 一、需求分析

处理的需求是:对一个表格中,相同 问诊id 的数据进行合并:

1. 对话内容整理成,一人一句对话的方式

2.合并H列和I列,用 一个患者的最后结束问诊时间 减去 最初发起问诊的时间 , 计算出一个患者的总问诊时间

3.将处理结果,放到sheet2中, 并 保存为 另一个excel ,"result.xlsx"

二、代码实现

使用 python的 openpyxl 库 处理excel表格; 使用datetime库,进行时间计算。

import openpyxl
import datetime

#计算时长
def subtime(date1,date2):
    date1=datetime.datetime.strptime(date1, "%Y-%m-%d %H:%M:%S")
    date2=datetime.datetime.strptime(date2, "%Y-%m-%d %H:%M:%S")
    return date2-date1

wb = openpyxl.load_workbook('11.6—11.10问诊对话.xlsm')
sheet = wb['11.6—11.10问诊对话(1)']
sheet2 = wb['Sheet2']

rows = sheet.max_row
columns = sheet.max_column

#制作结果表的 首行表头
for col in range(1, columns+1):
    if col<=7:
        sheet2.cell(1, col).value = sheet.cell(1, col).value
    if col==8:
        sheet2.cell(1, col).value ="问诊时间"
    if col==9:
        sheet2.cell(1, col).value ="对话内容"

#目标表 :计算问诊时间     合并对话
consult_id = None
consult_time = None
start_time = None
end_time = None
string_value = ''
new_row = 2
fist_time = 1

#记录首个问诊ID
last_consult_id = sheet.cell(2, 1).value

for row in range(2, rows+1):
    consult_id = sheet.cell(row, 1).value
    if consult_id != None:
        # 如果是新的问诊id
        if consult_id != last_consult_id:
            fist_time = 1  # 重置 first_time的值
            sheet2.cell(new_row, 9).value = string_value

            # 计算问诊时间,存入到的第8列
            if end_time!= None and start_time!= None:
                consult_time = subtime(start_time, end_time)
                sheet2.cell(new_row, 8).value = consult_time

            new_row = new_row + 1  # 新开一行写信息
            string_value =''

    for col in range(1, columns+1):
        if consult_id != None:
            #写入 前七列 信息
            if fist_time==1 and col<=7:
                sheet2.cell(new_row, col).value = sheet.cell(row, col).value
                #print(sheet.cell(row, col).value, col)

            #发起问诊的时间
            if col==8 and fist_time == 1:
                if sheet.cell(row, col).value:
                    start_time = str(sheet.cell(row, col).value)
                else:
                    start_time = None

            #结束问诊的时间
            if col == 9:
                if sheet.cell(row, col).value:
                    end_time = str(sheet.cell(row, col).value)
                else:
                    end_time = None

            #写入对话内容
            if col == 10:
                string_value = str(string_value) + str(sheet.cell(row, col).value) + ":"
            if col == 11:
                string_value = string_value + str(sheet.cell(row, col).value) + "n"
                fist_time = fist_time + 1

            last_consult_id = consult_id

wb.save('result.xlsx')

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5479791.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存