Files
jupyter/体测单位/胜利采油厂.ipynb
T
2025-10-30 08:24:56 +08:00

804 lines
26 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "markdown",
"id": "04524c85-988e-4dbf-86eb-939a9db7aa28",
"metadata": {},
"source": [
"## 体测人员导入"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "bbba6efc-73cd-4db6-bae7-014724fee731",
"metadata": {
"execution": {
"iopub.execute_input": "2025-10-23T04:40:11.186792Z",
"iopub.status.busy": "2025-10-23T04:40:11.186527Z",
"iopub.status.idle": "2025-10-23T04:40:11.243321Z",
"shell.execute_reply": "2025-10-23T04:40:11.242693Z",
"shell.execute_reply.started": "2025-10-23T04:40:11.186767Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"412 ok\n"
]
}
],
"source": [
"import openpyxl\n",
"import json\n",
"\n",
"\n",
"wb = openpyxl.load_workbook('data/胜利采油厂人员名单.xlsx',data_only=True)\n",
"sheet = wb.active\n",
"# sheets = wb.sheetnames\n",
"person = {}\n",
"\n",
"for n in range(2, sheet.max_row+1):\n",
" code = int(sheet.cell(n, 2).value)\n",
" person.setdefault(code, {})\n",
" dict1 = {}\n",
" dict1['name'] = sheet.cell(n, 4).value\n",
" dict1['sex'] = sheet.cell(n, 5).value\n",
" dict1['unit'] = sheet.cell(n, 3).value \n",
" dict1['birth'] = str(sheet.cell(n, 6).value).replace('/','-').split(' ')[0]\n",
" #dict1['phone'] = sheet.cell(n, 12).value \n",
" person[code] = dict1\n",
"filename = 'data/胜利采油厂人员.json'\n",
"with open(filename, 'w') as fl:\n",
" json.dump(person, fl, ensure_ascii=False)\n",
"print(len(person),'ok')"
]
},
{
"cell_type": "markdown",
"id": "048a95aa-1691-45f6-b933-6eaf95ae1d30",
"metadata": {},
"source": [
"## 生成读卡系统文件"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "ce406710-6b7d-4c51-98ec-78883bd3ce5f",
"metadata": {
"execution": {
"iopub.execute_input": "2025-10-22T05:36:04.807935Z",
"iopub.status.busy": "2025-10-22T05:36:04.807038Z",
"iopub.status.idle": "2025-10-22T05:36:04.823769Z",
"shell.execute_reply": "2025-10-22T05:36:04.822605Z",
"shell.execute_reply.started": "2025-10-22T05:36:04.807861Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ok\n"
]
}
],
"source": [
"import json\n",
"\n",
"filename = 'data/胜利采油厂人员.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"list1 = []\n",
"for k, v in dict1.items():\n",
" dict2 = {}\n",
" #if dict1['sex'] =='男':\n",
" # sex = 1\n",
" \n",
" dict2 = {'id':k,'name':v['name'],'gender':v['sex'],'birth':v['birth'],'unit':v['unit']}\n",
" list1.append(dict2)\n",
"json_data = json.dumps(list1,ensure_ascii=False, indent=4) \n",
"\n",
"# 将 json 数据写入文件\n",
"with open(\"data/data_胜利采油厂人员.json\", \"w\",encoding = 'utf-8') as file:\n",
" file.write(json_data) \n",
"print('ok')"
]
},
{
"cell_type": "markdown",
"id": "a627e5b1-15c7-405b-9c81-2022e1173ed3",
"metadata": {},
"source": [
"## 合并读卡系统文件"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "82526579-8902-458d-a097-c2446983fa3f",
"metadata": {
"execution": {
"iopub.execute_input": "2025-10-23T04:40:17.340605Z",
"iopub.status.busy": "2025-10-23T04:40:17.339457Z",
"iopub.status.idle": "2025-10-23T04:40:17.357806Z",
"shell.execute_reply": "2025-10-23T04:40:17.356944Z",
"shell.execute_reply.started": "2025-10-23T04:40:17.340544Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"496834 李继升 QHSE监督中心\n",
"3532664 谭嘉辰 人力资源(组织)部\n",
"496657 张秀成 企业管理部(三基工作办公室)\n",
"495136 闫福霞 公共事业服务中心\n",
"494062 赵霞 公共事业服务中心\n",
"495293 赵振华 \n",
"689404 马科 胜利采油厂\n",
"498782 封莹 胜利采油厂\n",
"999999 孙振峰 \n",
"445607 王大明 \n",
"490000 陆岩玮 信息化服务中心\n",
"000000 焦瀛 胜利采油厂\n",
"424 ok\n"
]
}
],
"source": [
"import json\n",
"\n",
"filename = 'data/胜利采油厂人员.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"\n",
"filename = 'data/data_胜利采油厂人员(1).json'\n",
"with open(filename,'r') as fl:\n",
" list1 = json.load(fl)\n",
"for item in list1:\n",
" code = item['id']\n",
" if code not in dict1.keys():\n",
" print(code,item['name'],item['unit'])\n",
" dict1.setdefault(code,{})\n",
" dict1[code]['name'] = item['name']\n",
" dict1[code]['sex'] = item['gender']\n",
" dict1[code]['unit'] = item['unit']\n",
" dict1[code]['birth'] = item['birth']\n",
"filename = 'data/胜利采油厂人员.json'\n",
"with open(filename, 'w') as fl:\n",
" json.dump(dict1, fl, ensure_ascii=False)\n",
"print(len(dict1),'ok')"
]
},
{
"cell_type": "markdown",
"id": "6bcd45c2-10af-4d5f-9e0b-5cd1df4f7a7f",
"metadata": {},
"source": [
"## 获取人员测试成绩"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "970e171e-1360-448f-a28c-520ccb8f314a",
"metadata": {
"execution": {
"iopub.execute_input": "2025-10-23T04:40:34.626526Z",
"iopub.status.busy": "2025-10-23T04:40:34.625771Z",
"iopub.status.idle": "2025-10-23T04:40:34.653754Z",
"shell.execute_reply": "2025-10-23T04:40:34.653195Z",
"shell.execute_reply.started": "2025-10-23T04:40:34.626453Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"216\n"
]
}
],
"source": [
"import json\n",
"import datetime\n",
"import csv\n",
"from datetime import date\n",
"import my_module as My\n",
"\n",
"filename = 'data/胜利采油厂人员.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"filename = 'data/marks_20251023.csv'\n",
"re_ta = My.get_result(filename,dict1)\n",
"\n",
"\n",
"filename = 'data/result_胜利采油厂.json'\n",
"with open(filename,'w') as fl:\n",
" json.dump(re_ta, fl, ensure_ascii=False) \n",
"print(len(re_ta))"
]
},
{
"cell_type": "markdown",
"id": "6d381859-6d21-45d2-8313-55ebbabf8bd4",
"metadata": {},
"source": [
"## 生成测试得分"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0905ad6a-f7e4-43ed-ae29-c4850deb946b",
"metadata": {
"execution": {
"iopub.execute_input": "2025-10-27T01:50:10.738997Z",
"iopub.status.busy": "2025-10-27T01:50:10.738633Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ok!\n"
]
}
],
"source": [
"import json\n",
"import time\n",
"import my_module as My\n",
"\n",
"#list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp','height','weight']\n",
"list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp']\n",
"filename = 'data/result_胜利采油厂1.json'\n",
"with open(filename,'r') as fl:\n",
" dict2 = json.load(fl) \n",
"for k, v in dict2.items():\n",
" #print(k)\n",
" if v['sex'] == '男':\n",
" sex = 'M'\n",
" else:\n",
" sex = 'F' \n",
" if 'bmi' in v.keys():\n",
" #bmi_data = v['height']['成绩'].split()[0]+','+ v['weight']['成绩'].split()[0]\n",
" bmi_data = v['bmi']['成绩']\n",
" data1 = {'code':k,'sex':sex,'age':v['age'],'item':'HeightWeight','result':bmi_data}\n",
" dict2[k]['bmi'] = {}\n",
" dict2[k]['bmi']['成绩'] = bmi_data\n",
" dict2[k]['bmi']['score'] = My.cal_bmi(data1)\n",
" for item_en in list_item:\n",
" if item_en in v.keys(): \n",
" data1 = {'code':k,'sex':sex,'age':v['age'],'item':item_en,'result':float(v[item_en]['成绩'].split()[0])}\n",
" #print(k,v['name'])\n",
" dict2[k][item_en]['score'] = My.cal_score(data1)\n",
" #print(k,v[item_en]['成绩'],cal_score(data1))\n",
"\n",
"filename = f'data/result_胜利采油厂1.json'\n",
"with open(filename,'w') as fl:\n",
" json.dump(dict2,fl , ensure_ascii=False) \n",
"print('ok!') "
]
},
{
"cell_type": "markdown",
"id": "3f7a810e-2a5f-4856-8119-bfe299b71f92",
"metadata": {},
"source": [
"## 补充人员信息"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "9c3b7195-b7f3-4355-90bc-9f1ae322641d",
"metadata": {
"execution": {
"iopub.execute_input": "2025-10-27T01:22:18.116597Z",
"iopub.status.busy": "2025-10-27T01:22:18.116000Z",
"iopub.status.idle": "2025-10-27T01:22:18.187150Z",
"shell.execute_reply": "2025-10-27T01:22:18.186557Z",
"shell.execute_reply.started": "2025-10-27T01:22:18.116559Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ok!\n"
]
}
],
"source": [
"import openpyxl\n",
"import json\n",
"\n",
"\n",
"wb = openpyxl.load_workbook('data/胜利采油厂测试情况明细表(补充人员信息).xlsx',data_only=True)\n",
"sheet = wb.active\n",
"# sheets = wb.sheetnames\n",
"dict1 = {}\n",
"\n",
"filename = 'data/result_胜利采油厂.json'\n",
"with open(filename,'r') as fl:\n",
" dict2 = json.load(fl) \n",
"list1 = []\n",
"for n in range(2, sheet.max_row+1):\n",
" code = int(sheet.cell(n, 1).value)\n",
" unit = sheet.cell(n, 4).value\n",
" dict1[code] = unit\n",
"for k, v in dict2.items():\n",
" if int(k) not in dict1.keys():\n",
" list1.append(k)\n",
" else:\n",
" dict2[k]['unit'] = dict1[int(k)]\n",
"for item in list1:\n",
" del dict2[item]\n",
"filename = f'data/result_胜利采油厂1.json'\n",
"with open(filename,'w') as fl:\n",
" json.dump(dict2,fl , ensure_ascii=False) \n",
"print('ok!') \n"
]
},
{
"cell_type": "markdown",
"id": "d034a61d-1fbd-417b-99bd-277e43ebb678",
"metadata": {},
"source": [
"## 导出测试人员信息"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "867ad6b0-9e9d-48bc-a10a-3b9cb6125890",
"metadata": {
"execution": {
"iopub.execute_input": "2025-10-23T04:41:25.970953Z",
"iopub.status.busy": "2025-10-23T04:41:25.969895Z",
"iopub.status.idle": "2025-10-23T04:41:26.058240Z",
"shell.execute_reply": "2025-10-23T04:41:26.057610Z",
"shell.execute_reply.started": "2025-10-23T04:41:25.970875Z"
},
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import openpyxl\n",
"\n",
"items = ['lung','grip','flexion','jump','pushup','situp','balance','reaction','step']\n",
"title = ['编号','姓名','性别','单位','部门','身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n",
"\n",
"filename = 'data/result_胜利采油厂.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"\n",
"filename = 'data/胜利采油厂人员.json'\n",
"with open(filename,'r') as fl:\n",
" dict2 = json.load(fl)\n",
" \n",
"list1 = []\n",
"for k, v in dict1.items():\n",
" list2 = []\n",
" list2.append(str(k).rjust(8,'0'))\n",
" list2.append(v['name']) \n",
" list2.append(dict2[k]['sex'])\n",
" list2.append(dict2[k]['unit'])\n",
" if 'bmi' in v.keys():\n",
" height = v['bmi']['成绩'].split(',')[0]\n",
" weight = v['bmi']['成绩'].split(',')[1]\n",
" list2.append(height)\n",
" list2.append(weight)\n",
" else:\n",
" list2.append('')\n",
" list2.append('')\n",
" for item in items:\n",
" if item in v.keys():\n",
" list2.append(v[item]['成绩']) \n",
" elif item =='name':\n",
" list2.append(v[item])\n",
" else:\n",
" list2.append('')\n",
" \n",
" list1.append(list2)\n",
"filename = 'data/胜利采油厂测试情况明细表.xlsx'\n",
"wb = openpyxl.Workbook()\n",
"sheet = wb.active\n",
"sheet.append(title)\n",
"for row in list1:\n",
" sheet.append(row)\n",
" \n",
"wb.save(filename)"
]
},
{
"cell_type": "markdown",
"id": "8d5f4103-0d1e-4711-b324-ece360f8dcd3",
"metadata": {},
"source": [
"## 生成报告"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "23ffd115-72a3-4f90-9e64-ffa6420df8a4",
"metadata": {},
"outputs": [],
"source": [
"import requests\n",
"import json\n",
"import openpyxl\n",
"\n",
"\n",
"headers = {\n",
" \"Content-Type\": \"application/json; charset=UTF-8\"\n",
" }\n",
"filename = 'data/result_南京化工-2.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"list1 = []\n",
"file_path ='./南京化工第二批问卷/'\n",
"list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp','bmi']\n",
"i=0\n",
"list2 = []\n",
"for k, v in dict1.items():\n",
" list1 = []\n",
" mydata = {}\n",
" \n",
" id = str(k).rjust(4,\"0\")\n",
" mydata['path'] = file_path+id+'-'+ v['name']+'.pdf'\n",
" mydata['title'] = '南化公司'\n",
" mydata['subtitle'] = ''#v['unit']\n",
" mydata['id'] = id\n",
" mydata['name'] = v['name']\n",
" if v['sex'] == '男':\n",
" mydata['gender'] = 'male'\n",
" else:\n",
" mydata['gender'] = 'female'\n",
" \n",
" mydata['month'] = v['month']\n",
" mydata['fits'] = {}\n",
" survey_list = ['tcm','psy57','spine']\n",
" for item in survey_list:\n",
" if item in v.keys():\n",
" mydata.setdefault('surveys',{})\n",
" mydata['surveys'][item] = v[item]\n",
" \n",
" \n",
" #mydata['fits'] = {}\n",
" for item in list_item:\n",
" if item in v.keys():\n",
" mydata.setdefault('fits',{})\n",
" if item in ['lung','pushup','step','situp']:\n",
" mark = v[item]['成绩'].split()[0].split('.')[0]\n",
" else:\n",
" mark = v[item]['成绩'].split()[0]\n",
" mydata['fits'][item] = {'mark':mark,'score':v[item]['score']}\n",
" if len(mydata['fits']) >2 or len(mydata['surveys']) >0:\n",
" #if len(mydata['fits']) >2 : \n",
" list1.append(mydata)\n",
" list2.append([k,v['name']])\n",
" i+=1\n",
" x = requests.post('http://localhost:3003', data = json.dumps(list1), headers=headers)\n",
" #print(id,v['name'],x.text)\n",
" #print(mydata)\n",
" #x.close()\n",
"print(i)"
]
},
{
"cell_type": "markdown",
"id": "007a67c3-3590-47d9-a6d3-9080574a7940",
"metadata": {},
"source": [
"### 生成报告(单问卷)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "fc2bfab2-7f56-4abf-b2c4-0fb49a0da563",
"metadata": {
"execution": {
"iopub.execute_input": "2025-09-01T07:20:49.606201Z",
"iopub.status.busy": "2025-09-01T07:20:49.605939Z",
"iopub.status.idle": "2025-09-01T07:21:08.746449Z",
"shell.execute_reply": "2025-09-01T07:21:08.745281Z",
"shell.execute_reply.started": "2025-09-01T07:20:49.606179Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"83\n"
]
}
],
"source": [
"import requests\n",
"import json\n",
"import openpyxl\n",
"\n",
"\n",
"headers = {\n",
" \"Content-Type\": \"application/json; charset=UTF-8\"\n",
" }\n",
"filename = 'data/result_南京化工-2.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"list1 = []\n",
"file_path ='./南京化工第二批问卷/'\n",
"list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp','bmi']\n",
"i=0\n",
"list2 = []\n",
"for k, v in dict1.items():\n",
" list1 = []\n",
" mydata = {}\n",
" \n",
" id = str(k)\n",
" mydata['path'] = file_path+id+'-'+ v['name']+'.pdf'\n",
" mydata['title'] = '南化公司'\n",
" mydata['subtitle'] = v['unit']\n",
" mydata['id'] = id\n",
" mydata['name'] = v['name']\n",
" if v['sex'] == 'm':\n",
" mydata['gender'] = 'male'\n",
" else:\n",
" mydata['gender'] = 'female'\n",
" \n",
" #mydata['month'] = v['month']\n",
" #mydata['fits'] = {}\n",
" survey_list = ['tcm','psy57','spine']\n",
" for item in survey_list:\n",
" if item in v.keys():\n",
" mydata.setdefault('surveys',{})\n",
" mydata['surveys'][item] = v[item]\n",
" \n",
" \n",
" #mydata['fits'] = {}\n",
" \n",
" if len(mydata['surveys']) >0:\n",
" #if len(mydata['fits']) >2 : \n",
" list1.append(mydata)\n",
" list2.append([k,v['name']])\n",
" i+=1\n",
" x = requests.post('http://localhost:3003', data = json.dumps(list1), headers=headers)\n",
" #print(id,v['name'],x.text)\n",
" #print(mydata)\n",
" #x.close()\n",
"print(i)"
]
},
{
"cell_type": "markdown",
"id": "42f1a67c-756a-4cf0-bd53-d71fb9c95aa6",
"metadata": {},
"source": [
"## 导入体检报告数据"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c2fb2c7c-6541-4c41-ba38-0e1fee29aa97",
"metadata": {},
"outputs": [],
"source": [
"from pathlib import Path\n",
"import json\n",
"import shutil\n",
"\n",
"\n",
"target_directory = Path('./data/json')\n",
"filename = 'data/南京化工人员.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"# 遍历目标目录及其子目录获取所有文件\n",
"dict2 = {}\n",
"list2 = ['总胆固醇','甘油三酯','尿微量白蛋白']\n",
"for fl in target_directory.glob('*.json'):\n",
" if fl.is_file():\n",
" code = fl.stem\n",
" dict2.setdefault(code,{})\n",
" dict2[code] = dict1[code]\n",
" with open(fl,'r') as fl1:\n",
" dict3 = json.load(fl1)\n",
" for k, v in dict3.items():\n",
" if k =='血压情况' and len(v)>0:\n",
" dict2[code].setdefault('血压',{})\n",
" list1 = [] \n",
" for item in v:\n",
" \n",
" dict2[code]['血压'][item['项目']] = item['结果']\n",
" if '状态' in item.keys():\n",
" list1.append(item['项目']+item['状态'])\n",
" if len(list1)>0:\n",
" dict2[code]['血压']['状态'] = ','.join(list1)\n",
" \n",
" if k in list2:\n",
" dict2[code].setdefault(k,{})\n",
" dict2[code][k]['结果'] = v['结果']\n",
" dict2[code][k]['参考值'] = v['参考值']\n",
" if '状态' in v.keys():\n",
" dict2[code][k]['状态'] = v['状态']\n",
" if k in ['空腹血糖','糖化血红蛋白']:\n",
" dict2[code].setdefault(k,{})\n",
" if '结果' in v.keys():\n",
" dict2[code][k]['结果'] = v['结果']\n",
" dict2[code][k]['参考值'] = v['参考值']\n",
" if '状态' in v.keys():\n",
" dict2[code][k]['状态'] = v['状态']\n",
" if k in ['ALT、AST、GGT','TSH、FT3、FT4']:\n",
" for item in v:\n",
" xm = item['项目']\n",
" dict2[code].setdefault(xm,{})\n",
" if '结果' in item.keys():\n",
" dict2[code][xm]['结果'] = item['结果']\n",
" if '参考值' in item.keys():\n",
" dict2[code][xm]['参考值'] = item['参考值']\n",
" if '状态' in item.keys():\n",
" dict2[code][xm]['状态'] = item['状态']\n",
" if k =='肾功能与尿微量白蛋白':\n",
" for item in v['肾功能']:\n",
" xm = item['项目']\n",
" dict2[code].setdefault(xm,{})\n",
" if '结果' in item.keys():\n",
" dict2[code][xm]['结果'] = item['结果']\n",
" if '参考值' in item.keys():\n",
" dict2[code][xm]['参考值'] = item['参考值']\n",
" if '状态' in item.keys():\n",
" dict2[code][xm]['状态'] = item['状态'] \n",
" dict2[code].setdefault('尿微量白蛋白',{})\n",
" xm = v['尿微量白蛋白']\n",
" if '结果' in xm.keys() and len(xm['结果'])>0:\n",
" dict2[code]['尿微量白蛋白']['结果'] = xm['结果']\n",
" if '参考值' in xm.keys() and len(xm['参考值'])>0:\n",
" dict2[code]['尿微量白蛋白']['参考值'] = xm['参考值']\n",
" if '状态' in xm.keys():\n",
" dict2[code]['尿微量白蛋白']['状态'] = xm['状态'] \n",
" \n",
" \n",
"\n",
"filename = 'data/南京化工体检情况.json'\n",
"\n",
"with open(filename,'w') as fl:\n",
" json.dump(dict2, fl, ensure_ascii=False) "
]
},
{
"cell_type": "markdown",
"id": "da43ceef-4215-4187-a76d-4e1434e50043",
"metadata": {},
"source": [
"## 导出体检报告数据"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "daa1b36e-1b62-49ee-9539-84c2d286fefe",
"metadata": {},
"outputs": [],
"source": [
"import json\n",
"import csv\n",
"import openpyxl\n",
"\n",
"filename = 'data/南京化工体检情况.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"\n",
"list1 = [\"总胆固醇\",\"甘油三酯\",\"空腹血糖\",\"糖化血红蛋白\",\"谷丙转氨酶 (ALT)\",\"谷草转氨酶 (AST)\",\"γ- 谷氨酰转肽酶 (GGT)\",\"促甲状腺激素 (TSH)\",\"游离三碘甲状腺原氨酸 (FT3)\",\"游离甲状腺素 (FT4)\",\"肌酐\",\"尿素氮\",\"尿酸\",\"尿微量白蛋白\"]\n",
"title = ['编号','姓名','性别','血压','状态']\n",
"for item in list1:\n",
" title.append(item)\n",
" title.append('状态')\n",
"list3 = []\n",
"for k, v in dict1.items():\n",
" list2 = []\n",
" list2.append(k)\n",
" list2.append(v['name'])\n",
" list2.append(v['sex'])\n",
" if '血压' in v.keys():\n",
" xueya = v['血压']['舒张压']+'/'+v['血压']['收缩压']\n",
" if '状态' in v['血压'].keys():\n",
" zt = v['血压']['状态']\n",
" else:\n",
" zt = ''\n",
" else:\n",
" xueya = ''\n",
" zt = ''\n",
" \n",
" list2.append(xueya)\n",
" list2.append(zt)\n",
" for item in list1:\n",
" if item in v.keys() and '结果' in v[item]:\n",
" list2.append(v[item]['结果'])\n",
" if '状态' in v[item]:\n",
" list2.append(v[item]['状态'])\n",
" else:\n",
" list2.append('')\n",
" else:\n",
" list2.append('')\n",
" list2.append('') \n",
" list3.append(list2)\n",
"\n",
"filename = 'data/南京化工体检相关数据明细.xlsx'\n",
"wb = openpyxl.Workbook()\n",
"sheet = wb.active\n",
"sheet.append(title)\n",
"for row in list3:\n",
" sheet.append(row)\n",
" \n",
"wb.save(filename)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "221b35dc-3a17-4950-993c-b634ee9a53cf",
"metadata": {},
"outputs": [],
"source": [
"from spire.pdf.common import *\n",
"from spire.pdf import *\n",
"\n",
"# 创建PdfDocument类的实例\n",
"pdf = PdfDocument()\n",
"\n",
"# 加载PDF文档\n",
"pdf.LoadFromFile(\"file/北海体检报告/2405280074.pdf\")\n",
"\n",
"# 将PDF转换为Markdown文件\n",
"pdf.SaveToFile(\"PDF转Markdown.md\", FileFormat.Markdown)\n",
"pdf.Close()\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1b9d4042-5e73-44e3-8079-eee2c5be1858",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}