1949 lines
58 KiB
Plaintext
1949 lines
58 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "4b749231-7ab9-4dcd-8cfd-7b9be485d3c6",
|
||
"metadata": {
|
||
"tags": [],
|
||
"toc-hr-collapsed": true
|
||
},
|
||
"source": [
|
||
"## 低碳院人员信息对应关系及导出"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "1a52629c-52b3-47ee-9796-9db0befc5140",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import os,sys,shutil\n",
|
||
"import openpyxl\n",
|
||
"import math\n",
|
||
"import json\n",
|
||
"\n",
|
||
"fi_xls = 'data/北京低碳监测.xlsx'\n",
|
||
"old = []\n",
|
||
"dict1 = {}\n",
|
||
"dict2 = {}\n",
|
||
"dict3 = {}\n",
|
||
"wb = openpyxl.load_workbook(fi_xls)\n",
|
||
"sheet = wb.active\n",
|
||
"depart = []\n",
|
||
"for n in range(2,sheet.max_row+1): \n",
|
||
" m_name = sheet.cell(n,6).value\n",
|
||
" m_depart = sheet.cell(n,3).value\n",
|
||
" if sheet.cell(n,4).value is not None:\n",
|
||
" dict1[int(sheet.cell(n,4).value)] = [m_name,m_depart]\n",
|
||
"fi_xls = 'data/低碳院人员邮件信息.xlsx'\n",
|
||
"\n",
|
||
"wb = openpyxl.load_workbook(fi_xls)\n",
|
||
"sheet = wb.active\n",
|
||
"for n in range(2,sheet.max_row+1): \n",
|
||
" m_dm = sheet.cell(n,3).value\n",
|
||
" m_depart = sheet.cell(n,2).value\n",
|
||
" m_name = sheet.cell(n,4).value\n",
|
||
" m_email = sheet.cell(n,3).value+sheet.cell(n,6).value\n",
|
||
"\n",
|
||
" if sheet.cell(n,3).value is not None:\n",
|
||
" dict2[sheet.cell(n,3).value] = [m_name,m_depart,m_email]\n",
|
||
"#print(dict2)\n",
|
||
"for item in dict1.keys():\n",
|
||
" old.append(item)\n",
|
||
"old.sort()\n",
|
||
"\n",
|
||
"for n in old:\n",
|
||
" m_name = dict1[n][0]\n",
|
||
" m_depart = dict1[n][1]\n",
|
||
" for item in dict2.values():\n",
|
||
" if m_name in item and m_depart in item:\n",
|
||
" dict3[int(n)] = [m_name,m_depart,item[2]]\n",
|
||
" break\n",
|
||
"dict3[232] = ['王锐','新能源技术研究中心','20063984@ceic.com']\n",
|
||
"dict3[213] = ['王锐','新能源技术研究中心','17240222@ceic.com']\n",
|
||
"\n",
|
||
"fi_xls = 'data/汇总表.xlsx'\n",
|
||
"\n",
|
||
"wb = openpyxl.load_workbook(fi_xls)\n",
|
||
"sheet = wb.active\n",
|
||
"for n in range(2,sheet.max_row+1): \n",
|
||
" m_dm = int(sheet.cell(n,1).value)\n",
|
||
" m_pn = sheet.cell(n,6).value\n",
|
||
" m_xb = sheet.cell(n,3).value\n",
|
||
" m_birth = sheet.cell(n,4).value\n",
|
||
" if sheet.cell(n,1).value is not None:\n",
|
||
" dict3[m_dm].append(m_xb)\n",
|
||
" dict3[m_dm].append(m_birth)\n",
|
||
" dict3[m_dm].append(m_pn)\n",
|
||
"#print(dict2)\n",
|
||
"\n",
|
||
"with open('data/低碳院人员信息.json','w') as fl2:\n",
|
||
" json.dump(dict3,fl2,ensure_ascii=False) "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "2494ff3b-f52f-4933-9879-1b47857d8c67",
|
||
"metadata": {
|
||
"jp-MarkdownHeadingCollapsed": true,
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"## 低碳院人员体质分组"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "b18747ae-bda7-40bb-af9d-76a987608b81",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 导出至Excel文件"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "a1473ba9-9d8b-4b8a-91a4-d72d680aed8b",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import openpyxl\n",
|
||
"import json\n",
|
||
"\n",
|
||
"dict1 = {}\n",
|
||
"fl_name = 'data/低碳院人员信息.json'\n",
|
||
"with open(fl_name,'r') as fl:\n",
|
||
" m_xx = json.load(fl)\n",
|
||
" \n",
|
||
"#print(m_xx)\n",
|
||
"fi_xls = 'data/适应A组.xlsx'\n",
|
||
"wb = openpyxl.load_workbook(fi_xls)\n",
|
||
"sheet = wb.active\n",
|
||
"for n in range(2,sheet.max_row+1):\n",
|
||
" if sheet.cell(n,3).value is not None:\n",
|
||
" m_dm = str(sheet.cell(n,1).value)\n",
|
||
" m_name = sheet.cell(n,2).value\n",
|
||
" m_email = m_xx[m_dm][2]\n",
|
||
" m_pn = m_xx[m_dm][3]\n",
|
||
" dict1[m_dm.rjust(5,\"0\")] = [m_name,m_email,m_pn]\n",
|
||
"m_dm = []\n",
|
||
"for item in dict1.keys():\n",
|
||
" m_dm.append(item.rjust(5,\"0\"))\n",
|
||
"m_dm.sort()\n",
|
||
"wb = openpyxl.Workbook()\n",
|
||
"sheet = wb.active\n",
|
||
"i = 2\n",
|
||
"sheet[f'A1'] = '编号'\n",
|
||
"sheet[f'B1'] = '姓名'\n",
|
||
"sheet[f'C1'] = '邮箱'\n",
|
||
"sheet[f'D1'] = '电话'\n",
|
||
"for item in m_dm:\n",
|
||
" sheet[f'A{i}'] = item\n",
|
||
" sheet[f'B{i}'] = dict1[item][0]\n",
|
||
" sheet[f'C{i}'] = dict1[item][1]\n",
|
||
" sheet[f'D{i}'] = dict1[item][2]\n",
|
||
" i+=1\n",
|
||
"wb.save('data/A.xlsx') "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "1bb5122f-6100-44b4-9f65-9fac74f69136",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 导出邮件发送人信息"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "9635e141-60f7-4128-baed-d9c31c1fb1b1",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import openpyxl\n",
|
||
"import json\n",
|
||
"\n",
|
||
"dict1 = {}\n",
|
||
"fl_name = 'data/低碳院人员信息.json'\n",
|
||
"with open(fl_name,'r') as fl:\n",
|
||
" m_xx = json.load(fl)\n",
|
||
" \n",
|
||
"#print(m_xx)\n",
|
||
"list1 = []\n",
|
||
"fi_xls = 'data/适应A组.xlsx'\n",
|
||
"wb = openpyxl.load_workbook(fi_xls)\n",
|
||
"sheet = wb.active\n",
|
||
"for n in range(2,sheet.max_row+1):\n",
|
||
" if sheet.cell(n,3).value is not None:\n",
|
||
" m_dm = str(sheet.cell(n,1).value)\n",
|
||
" m_name = sheet.cell(n,2).value\n",
|
||
" m_email = m_xx[m_dm][2]\n",
|
||
" m_pn = m_xx[m_dm][3]\n",
|
||
" dict1[m_dm.rjust(5,\"0\")] = [m_name,m_email,m_pn]\n",
|
||
"m_dm = []\n",
|
||
"for item in dict1.keys():\n",
|
||
" m_dm.append(item)\n",
|
||
"m_dm.sort()\n",
|
||
"for s in m_dm:\n",
|
||
" if dict1[s][1]:\n",
|
||
" list1.append(dict1[s][1])\n",
|
||
"#print(';'.join(list1))\n",
|
||
"m_len = len(list1)\n",
|
||
"if m_len > 200:\n",
|
||
" mail_list1 = []\n",
|
||
" mail_list2 = []\n",
|
||
" mail_list3 = []\n",
|
||
" for i in range(0,100):\n",
|
||
" mail_list1.append(list1[i])\n",
|
||
" for i in range(100,200):\n",
|
||
" mail_list2.append(list1[i])\n",
|
||
" for i in range(200,m_len):\n",
|
||
" mail_list3.append(list1[i])\n",
|
||
" #print(len(mail_list1),len(mail_list2))\n",
|
||
" print(';'.join(mail_list1))\n",
|
||
" print('\\n')\n",
|
||
" print(';'.join(mail_list2))\n",
|
||
" print('\\n')\n",
|
||
" print(';'.join(mail_list3))\n",
|
||
"else:\n",
|
||
" mail_list1 = []\n",
|
||
" for i in range(0,m_len):\n",
|
||
" mail_list1.append(list1[i])\n",
|
||
" print(';'.join(mail_list1))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "ce79e61f-83c4-4425-b27b-e9edf8fb20cd",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 汇总分组导出Excel"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "ad88fd2a-39ce-4a88-bd4a-7699264fd47d",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import openpyxl\n",
|
||
"import json\n",
|
||
"\n",
|
||
"dict1 = {}\n",
|
||
"fl_name = 'data/低碳院人员信息.json'\n",
|
||
"with open(fl_name,'r') as fl:\n",
|
||
" dict1 = json.load(fl)\n",
|
||
" \n",
|
||
"#print(m_xx)\n",
|
||
"list1 = ['适应A组','适应B组','适应C组','提高组']\n",
|
||
"for item in list1:\n",
|
||
" fi_xls = f'data/{item}.xlsx'\n",
|
||
" wb = openpyxl.load_workbook(fi_xls)\n",
|
||
" sheet = wb.active\n",
|
||
" for n in range(2,sheet.max_row+1):\n",
|
||
" if sheet.cell(n,3).value is not None:\n",
|
||
" m_dm = str(sheet.cell(n,1).value) \n",
|
||
" dict1[m_dm].append(item)\n",
|
||
"wb = openpyxl.Workbook()\n",
|
||
"sheet = wb.active\n",
|
||
"sheet['A1'] = '编号'\n",
|
||
"sheet['B1'] = '姓名'\n",
|
||
"sheet['C1'] = '性别'\n",
|
||
"sheet['D1'] = '出生日期'\n",
|
||
"sheet['E1'] = '部门'\n",
|
||
"sheet['F1'] = '邮件'\n",
|
||
"sheet['G1'] = '联系电话'\n",
|
||
"sheet['H1'] = '组别'\n",
|
||
"i = 2 \n",
|
||
"for k, v in dict1.items(): \n",
|
||
" sheet[f'A{i}'] = k\n",
|
||
" sheet[f'B{i}'] = v[0]\n",
|
||
" sheet[f'C{i}'] = v[3]\n",
|
||
" sheet[f'D{i}'] = v[4]\n",
|
||
" sheet[f'E{i}'] = v[1]\n",
|
||
" sheet[f'F{i}'] = v[2]\n",
|
||
" sheet[f'G{i}'] = v[5]\n",
|
||
" sheet[f'H{i}'] = v[6]\n",
|
||
" i+= 1\n",
|
||
" \n",
|
||
"wb.save('data/低碳院人员运动分组表.xlsx') "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "231a0872-34ac-4121-870e-ba398a158576",
|
||
"metadata": {
|
||
"jp-MarkdownHeadingCollapsed": true,
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"## 合并人员成绩"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "968eacff-74c0-4a2f-aa2a-c29b6da71364",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import openpyxl\n",
|
||
"import math\n",
|
||
"import json\n",
|
||
"\n",
|
||
"dict1 = {}\n",
|
||
"\n",
|
||
" \n",
|
||
"#print(m_xx)\n",
|
||
"fi_xls = 'data/成绩得分4.xlsx'\n",
|
||
"wb = openpyxl.load_workbook(fi_xls)\n",
|
||
"sheet = wb.active\n",
|
||
"for n in range(2,sheet.max_row+1):\n",
|
||
" if sheet.cell(n,1).value is not None:\n",
|
||
" m_dm = sheet.cell(n,1).value\n",
|
||
" list1 = []\n",
|
||
" for i in range(2,28):\n",
|
||
" list1.append(sheet.cell(n,i).value)\n",
|
||
" dict1[m_dm] = list1\n",
|
||
"fi_xls = 'data/成绩得分5.xlsx'\n",
|
||
"wb = openpyxl.load_workbook(fi_xls)\n",
|
||
"sheet = wb.active\n",
|
||
"for n in range(2,sheet.max_row+1):\n",
|
||
" if sheet.cell(n,1).value is not None:\n",
|
||
" m_dm = sheet.cell(n,1).value\n",
|
||
" list1 = []\n",
|
||
" for i in range(2,28):\n",
|
||
" list1.append(sheet.cell(n,i).value)\n",
|
||
" dict1[m_dm] = list1\n",
|
||
"#print(dict1)\n",
|
||
"wb = openpyxl.Workbook()\n",
|
||
"sheet = wb.active\n",
|
||
"i = 1\n",
|
||
" \n",
|
||
"for k, v in dict1.items():\n",
|
||
" m_bh = str(k).rjust(5,\"0\")\n",
|
||
" list2=['B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA']\n",
|
||
" sheet[f'A{i}'] = k\n",
|
||
" for ii in range(0,26): \n",
|
||
" sheet[f'{list2[ii]}{i}'] = v[ii]\n",
|
||
" ii+= 1\n",
|
||
" i+= 1\n",
|
||
" \n",
|
||
"wb.save('data/合并.xlsx') \n",
|
||
" \n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "0bef4bd3-99e8-4a2d-a418-77f832b1254a",
|
||
"metadata": {
|
||
"jp-MarkdownHeadingCollapsed": true,
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"## 导出人员信息表"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "c0dac48c-490a-4632-8bdc-46c09adb9de8",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import openpyxl\n",
|
||
"import math\n",
|
||
"import json\n",
|
||
" \n",
|
||
"dict1 = {}\n",
|
||
"fl_name = 'data/低碳院人员信息.json'\n",
|
||
"with open(fl_name,'r') as fl:\n",
|
||
" m_xx = json.load(fl)\n",
|
||
" \n",
|
||
"wb = openpyxl.Workbook()\n",
|
||
"sheet = wb.active\n",
|
||
"sheet['A1'] = '编号'\n",
|
||
"sheet['B1'] = '姓名'\n",
|
||
"sheet['C1'] = '性别'\n",
|
||
"sheet['D1'] = '出生日期'\n",
|
||
"sheet['E1'] = '部门'\n",
|
||
"sheet['F1'] = '邮件'\n",
|
||
"sheet['G1'] = '联系电话'\n",
|
||
"i = 2 \n",
|
||
"for k, v in m_xx.items():\n",
|
||
" m_bh = str(k).rjust(5,\"0\")\n",
|
||
" sheet[f'A{i}'] = k\n",
|
||
" sheet[f'B{i}'] = v[0]\n",
|
||
" sheet[f'C{i}'] = v[3]\n",
|
||
" sheet[f'D{i}'] = v[4]\n",
|
||
" sheet[f'E{i}'] = v[1]\n",
|
||
" sheet[f'F{i}'] = v[2]\n",
|
||
" sheet[f'G{i}'] = v[5]\n",
|
||
" i+= 1\n",
|
||
" \n",
|
||
"wb.save('data/低碳院人员信息表.xlsx') "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "b1462a26-59f8-4e5f-8fb9-d927059e0747",
|
||
"metadata": {
|
||
"jp-MarkdownHeadingCollapsed": true,
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"## 获取第一次报告人员情况"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "a09d16d7-62a8-4628-9df3-4658a78a9a14",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
" \n",
|
||
"dict1 = {}\n",
|
||
"fl_name = 'data/低碳院报告.json'\n",
|
||
"with open(fl_name,'r') as fl:\n",
|
||
" m_xx = json.load(fl)\n",
|
||
"print(len(m_xx.keys()))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "bb3448ff-a8d3-417d-ab3a-4b54e28aaca0",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"## 2023年体测情况"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "d7ad01ef-93c3-4735-b609-bb5d38f85a25",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 导入最新人员手机信息"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "dfa3f093-25a7-4a8d-b4d6-22e0f6fcbb92",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import openpyxl\n",
|
||
"import math\n",
|
||
"import json\n",
|
||
"import pymysql\n",
|
||
"\n",
|
||
"\n",
|
||
"fi_xls = 'data/低碳院多点账号20230217.xlsx'\n",
|
||
"chongming = ['王锐','王楠','郭强','王涛','张静']\n",
|
||
"dict1 = {}\n",
|
||
"dict2 = {}\n",
|
||
"dict3 = {}\n",
|
||
"\n",
|
||
"db = pymysql.connect(host = \"localhost\",user = \"songyi\",password = \"yylzs\",database = \"ydyb\" )\n",
|
||
"cursor = db.cursor()\n",
|
||
"sql = \"SELECT a.name ,a.phone,b.avatar_id FROM people as a,places_people as b WHERE a.id =b.people_id AND b.place_id = 139\"\n",
|
||
"cursor.execute(sql)\n",
|
||
"results = cursor.fetchall()\n",
|
||
"for result in results:\n",
|
||
" if result[0] not in chongming:\n",
|
||
" dict2[result[0]] = [str(result[1]).strip(),result[2]]\n",
|
||
"#print(dict2)\n",
|
||
"\n",
|
||
"wb = openpyxl.load_workbook(fi_xls)\n",
|
||
"sheet = wb.active\n",
|
||
"for n in range(2,sheet.max_row+1):\n",
|
||
" if sheet.cell(n,2).value is not None:\n",
|
||
" dict1[int(sheet.cell(n,1).value)] = [sheet.cell(n,2).value,sheet.cell(n,3).value,str(sheet.cell(n,4).value).strip()]\n",
|
||
"#print(dict1)\n",
|
||
"i = 1\n",
|
||
"for k, v in dict1.items():\n",
|
||
" if v[0] in dict2.keys() and v[2]!=dict2[v[0]][0]:\n",
|
||
" print(i,v[0],v[2],dict2[v[0]][1])\n",
|
||
" i+= 1"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "f1d79414-577e-4bfa-b3db-1c9ac3168f76",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 获取人员统计信息"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "916e4437-d28a-4d41-ab87-9470c6b7116d",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
"import pymysql\n",
|
||
"import datetime\n",
|
||
"\n",
|
||
"dict1 = {}\n",
|
||
"dict2 = {}\n",
|
||
"dict3 = {}\n",
|
||
"\n",
|
||
"db = pymysql.connect(host = \"localhost\",user = \"songyi\",password = \"yylzs\",database = \"ydyb\" )\n",
|
||
"cursor = db.cursor()\n",
|
||
"sql = \"SELECT b.avatar_id, a.name ,a.sex,a.birth FROM people as a,places_people as b WHERE a.id =b.people_id AND b.place_id = 139\"\n",
|
||
"cursor.execute(sql)\n",
|
||
"results = cursor.fetchall()\n",
|
||
"for result in results:\n",
|
||
" bh = result[0]\n",
|
||
" \n",
|
||
" name = str(result[1]).strip()\n",
|
||
" dict2.setdefault(bh,{})\n",
|
||
" dict2[bh]['name'] = name\n",
|
||
" dict2[bh]['sex'] = result[2]\n",
|
||
" #dict2[bh]['birth'] = result[3]\n",
|
||
" #print(result[3])\n",
|
||
" days = (datetime.date(2023, 3, 6)-result[3]).days\n",
|
||
" dict2[bh]['age'] = round(days/365)\n",
|
||
"\n",
|
||
"filename = 'data/低碳院体测人员信息2023.json'\n",
|
||
"with open(filename, 'w') as fl:\n",
|
||
" json.dump(dict2, fl, ensure_ascii=False)\n",
|
||
"print('ok')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "e659cc7e-080a-4ad6-9306-3cfff0aca134",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 获取人员测试成绩"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "3e6b4c99-fa09-414d-9dd5-932835d8609c",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
"import time\n",
|
||
"import csv\n",
|
||
"\n",
|
||
"filename = '../item.json'\n",
|
||
"item = {}\n",
|
||
"unit = {}\n",
|
||
"with open(filename,'r') as fl:\n",
|
||
" dict1 = json.load(fl) \n",
|
||
"for k,v in dict1.items():\n",
|
||
" item[k] = v\n",
|
||
"#SQL语句为:\n",
|
||
"#SELECT a.item_id,a.performance,a.score,a.date AS DATE1,a.avatar_id,b.unit,b.name,a.date_joined FROM places_result AS a,_tianjin AS b WHERE a.place_id=134 AND a.avatar_id=b.id\n",
|
||
"\n",
|
||
"re_ta = {}\n",
|
||
"dict1 = {}\n",
|
||
"list1 = []\n",
|
||
"#print(\"\\n运动项目信息:\")\n",
|
||
"filename = 'data/139.csv'\n",
|
||
"with open(filename,'r',newline='') as csv_file:\n",
|
||
" fl = csv.reader(csv_file,delimiter=',')\n",
|
||
" header = next(fl) \n",
|
||
" for line in fl:\n",
|
||
" #line = re.sub('[\\r\\n\\f ]{1,}', '', line)\n",
|
||
" list1.append(line)\n",
|
||
"#print(list1)\n",
|
||
"for result in list1:\n",
|
||
" user = str(result[4])\n",
|
||
" m_item = str(result[0]) \n",
|
||
" re_ta.setdefault(user,{}) \n",
|
||
" re_ta[user]['name'] = str(result[6])\n",
|
||
" re_ta[user]['unit'] = str(result[5]) \n",
|
||
" item_name = item[m_item]['name']\n",
|
||
" re_ta[user].setdefault(item_name,{}) \n",
|
||
" score = int(result[1])/item[m_item]['divisor'] \n",
|
||
" re_ta[user][item_name]['成绩'] = f'{score} {item[m_item][\"unit\"]}'\n",
|
||
" re_ta[user][item_name]['得分'] =result[2]\n",
|
||
"filename = 'data/result_低碳院.json'\n",
|
||
"with open(filename,'w') as fl:\n",
|
||
" json.dump(re_ta, fl) \n",
|
||
"print('ok')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "36085f28-fad2-490e-b085-2ef5dd5d64c8",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 统计人员测试成绩"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "9e0f798b-665f-4ffb-a18c-fc8f87f21ade",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### 汇总人员信息及成绩"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "18b7ab77-8fc3-4edf-93c4-9a1e29cd71f6",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
"\n",
|
||
"\n",
|
||
"items = ['体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n",
|
||
"filename = 'data/result_低碳院.json'\n",
|
||
"\n",
|
||
"with open(filename,'r') as fl:\n",
|
||
" dict1 = json.load(fl) \n",
|
||
"\n",
|
||
"filename = 'data/低碳院体测人员信息2023.json'\n",
|
||
"with open(filename,'r') as fl:\n",
|
||
" dict2 = json.load(fl) \n",
|
||
"for k,v in dict1.items():\n",
|
||
" print(k)\n",
|
||
" score = 0\n",
|
||
" i = 0\n",
|
||
" for k1,v1 in v.items():\n",
|
||
" \n",
|
||
" \n",
|
||
" if k1 in items:\n",
|
||
" score = score + int(v1['得分'])\n",
|
||
" i+=1\n",
|
||
" \n",
|
||
" dict1[k]['age'] = dict2[k]['age']\n",
|
||
" dict1[k]['sex'] = dict2[k]['sex']\n",
|
||
" dict1[k]['score'] = round(score/i,2)\n",
|
||
" \n",
|
||
"filename = 'data/result_低碳院.json'\n",
|
||
"with open(filename,'w') as fl:\n",
|
||
" json.dump(dict1, fl) \n",
|
||
"print('ok')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "270af334-51d0-4c79-8639-e64fb4bb292a",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 报告分组更名"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "f0860f3a-9f63-43c9-aa39-3ee5ad8116e3",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import os,sys,shutil\n",
|
||
"import json\n",
|
||
"import math\n",
|
||
"import openpyxl\n",
|
||
"\n",
|
||
"filename = 'data/低碳院体测人员信息2023.json'\n",
|
||
"with open(filename,'r') as fl:\n",
|
||
" dict1 = json.load(fl)\n",
|
||
"\n",
|
||
"fi_path = 'file/139/2023-03-08'\n",
|
||
"m_path = 'file/139/new'\n",
|
||
"old = []\n",
|
||
"\n",
|
||
"fl=os.listdir(fi_path)\n",
|
||
"for fn in fl:\n",
|
||
" if os.path.isfile(fi_path + '/' + fn):\n",
|
||
" ofn = int(fn.split('.')[0])\n",
|
||
" old.append(ofn) \n",
|
||
"old.sort()\n",
|
||
"for n in old: \n",
|
||
" o_name = f'{fi_path}/{n}.pdf'\n",
|
||
" name = dict1[str(n)]['name']\n",
|
||
" n_name = f'{m_path}/{str(n).rjust(5,\"0\")}-{name}.pdf'\n",
|
||
" #print(o_name,n_name)\n",
|
||
" if not os.path.exists(n_name):\n",
|
||
" shutil.copyfile(o_name,n_name)\n",
|
||
" print(n_name)\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "8c97bf0f-2b01-487d-bd18-200fcbe2c9b3",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### 根据年龄汇总人员信息及成绩"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "bcc60f36-71aa-4d59-b4dd-55b1f95ef4f3",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
"\n",
|
||
"\n",
|
||
"nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,59],[60,69]]\n",
|
||
"filename = 'data/result_低碳院.json'\n",
|
||
"with open(filename,'r') as fl:\n",
|
||
" dict1 = json.load(fl) \n",
|
||
"for item in nld:\n",
|
||
" di = item[0]\n",
|
||
" gao = item[1]\n",
|
||
" i = 1\n",
|
||
" score = 0\n",
|
||
" for k,v in dict1.items():\n",
|
||
" if v['age'] in range(di,gao+1):\n",
|
||
" score = score+v['score']\n",
|
||
" i+=1\n",
|
||
" print(f'{di}~{gao}岁平均成绩:{round(score/i,2)}分,人数:{i-1}人')\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "f0d65f4e-04e8-4680-9b30-77b045be4e0a",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### 根据项目汇总人员信息及成绩"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "f0624326-7a21-4358-a036-daf03432bc80",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
"import openpyxl\n",
|
||
"\n",
|
||
"items = ['体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n",
|
||
"filename = 'data/result_低碳院.json'\n",
|
||
"with open(filename,'r') as fl:\n",
|
||
" dict1 = json.load(fl) \n",
|
||
"dict2 = {}\n",
|
||
"for item in items:\n",
|
||
" dict2.setdefault(item,{})\n",
|
||
" for k, v in dict1.items():\n",
|
||
" if item in v.keys():\n",
|
||
" dict2[item].setdefault('总体',[0,0])\n",
|
||
" \n",
|
||
" if v['sex']==0:\n",
|
||
" sex = '男'\n",
|
||
" else:\n",
|
||
" sex = '女'\n",
|
||
" dict2[item].setdefault(sex,[0,0])\n",
|
||
" dict2[item]['总体'][0]= dict2[item]['总体'][0]+int(v[item]['得分'])\n",
|
||
" dict2[item]['总体'][1]= dict2[item]['总体'][1]+1\n",
|
||
" dict2[item][sex][0] = dict2[item][sex][0]+int(v[item]['得分'])\n",
|
||
" dict2[item][sex][1] = dict2[item][sex][1]+1\n",
|
||
"print(dict2)\n",
|
||
"title= []\n",
|
||
"zt= []\n",
|
||
"nan= []\n",
|
||
"nv = []\n",
|
||
"title.append('')\n",
|
||
"zt.append('总体')\n",
|
||
"nan.append('男性')\n",
|
||
"nv.append('女性')\n",
|
||
"for k, v in dict2.items():\n",
|
||
" title.append(k)\n",
|
||
" zt.append(round(v['总体'][0]/v['总体'][1],2))\n",
|
||
" if '男' in v.keys():\n",
|
||
" nan.append(round(v['男'][0]/v['男'][1],2))\n",
|
||
" else:\n",
|
||
" nan.append(' ')\n",
|
||
" if '女' in v.keys():\n",
|
||
" nv.append(round(v['女'][0]/v['女'][1],2))\n",
|
||
" else:\n",
|
||
" nv.append(' ')\n",
|
||
"list1 = []\n",
|
||
"\n",
|
||
"list1.append(zt)\n",
|
||
"list1.append(nan)\n",
|
||
"list1.append(nv)\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)\n",
|
||
" \n",
|
||
" \n",
|
||
" \n",
|
||
" \n",
|
||
" \n",
|
||
" \n",
|
||
" \n",
|
||
" \n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "c27c6f4b-d0ed-40e8-aed9-09662edd21c6",
|
||
"metadata": {
|
||
"jp-MarkdownHeadingCollapsed": true,
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"### 统计问卷人员信息"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "8ccee97e-60e0-4363-b706-d4a71f214142",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
"import pymysql\n",
|
||
"import openpyxl\n",
|
||
"\n",
|
||
"\n",
|
||
"dict1 = {}\n",
|
||
"dict2 = {}\n",
|
||
"dict3 = {}\n",
|
||
"list1 = []\n",
|
||
"fi_xls = 'data/低碳院多点账号20230217.xlsx'\n",
|
||
"wb = openpyxl.load_workbook(fi_xls)\n",
|
||
"sheet = wb.active\n",
|
||
"for n in range(2,sheet.max_row+1):\n",
|
||
" if sheet.cell(n,2).value is not None:\n",
|
||
" list1.append(str(sheet.cell(n,4).value).strip())\n",
|
||
"#print(list1)\n",
|
||
"list2 = []\n",
|
||
"list3 = []\n",
|
||
"\n",
|
||
"\n",
|
||
"db = pymysql.connect(host = \"localhost\",user = \"songyi\",password = \"yylzs\",database = \"ydyb\" )\n",
|
||
"cursor = db.cursor()\n",
|
||
"sql = \"select * FROM Survey s WHERE s.surveyId IN ('psy6') AND s.updatedAt >'2022-11-01'\"\n",
|
||
"cursor.execute(sql)\n",
|
||
"results = cursor.fetchall()\n",
|
||
"for result in results: \n",
|
||
" #dict2[result[0]] = [str(result[2]).strip(),result[1]]\n",
|
||
" dict2[result[0]] = str(result[2]).strip()\n",
|
||
"#print(dict2)\n",
|
||
"for k, v in dict2.items():\n",
|
||
" if v not in list1:\n",
|
||
" list2.append(v)\n",
|
||
"sql = \"SELECT a.phone FROM people as a,places_people as b WHERE a.id =b.people_id AND b.place_id = 139\"\n",
|
||
"cursor.execute(sql)\n",
|
||
"results = cursor.fetchall()\n",
|
||
"for result in results:\n",
|
||
" list3.append(result[0])\n",
|
||
"#print(dict2)\n",
|
||
"for item in list2:\n",
|
||
" if item not in list3:\n",
|
||
" print(item)\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "9ba6ea9a-28f5-43c7-9dd7-74a626838303",
|
||
"metadata": {
|
||
"jp-MarkdownHeadingCollapsed": true,
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"### 统计2022年问卷人员信息"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "1ddcc50e-f6b5-4fcc-8bb4-64ebb1d6f9e3",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### 统计2022年问卷人员总信息"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "2339b885-e885-499a-a078-5a2a1fb818bd",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
"import pymysql\n",
|
||
"import openpyxl\n",
|
||
"\n",
|
||
"\n",
|
||
"dict1 = {}\n",
|
||
"dict2 = {}\n",
|
||
"dict3 = {}\n",
|
||
"list1 = []\n",
|
||
"fi_xls = 'data/低碳院多点账号20230217.xlsx'\n",
|
||
"wb = openpyxl.load_workbook(fi_xls)\n",
|
||
"sheet = wb.active\n",
|
||
"for n in range(2,sheet.max_row+1):\n",
|
||
" if sheet.cell(n,2).value is not None:\n",
|
||
" list1.append(str(sheet.cell(n,4).value).strip())\n",
|
||
"#print(list1)\n",
|
||
"list2 = []\n",
|
||
"list3 = []\n",
|
||
"\n",
|
||
"\n",
|
||
"db = pymysql.connect(host = \"localhost\",user = \"songyi\",password = \"yylzs\",database = \"ydyb\" )\n",
|
||
"cursor = db.cursor()\n",
|
||
"sql = \"select * FROM Survey s WHERE s.surveyId IN ('psy4','tcmv2') AND s.updatedAt >'2022-11-01'\"\n",
|
||
"cursor.execute(sql)\n",
|
||
"results = cursor.fetchall()\n",
|
||
"for result in results: \n",
|
||
" #dict2[result[0]] = [str(result[2]).strip(),result[1]]\n",
|
||
" dict2[result[0]] = str(result[2]).strip()\n",
|
||
"#print(dict2)\n",
|
||
"for k, v in dict2.items():\n",
|
||
" if v not in list1:\n",
|
||
" list2.append(v)\n",
|
||
"sql = \"SELECT a.phone FROM people as a,places_people as b WHERE a.id =b.people_id AND b.place_id = 139\"\n",
|
||
"cursor.execute(sql)\n",
|
||
"results = cursor.fetchall()\n",
|
||
"for result in results:\n",
|
||
" list3.append(result[0])\n",
|
||
"#print(dict2)\n",
|
||
"for item in list2:\n",
|
||
" if item not in list3:\n",
|
||
" print(item)\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "fc57ad21-a1d1-4728-8997-016fd72cbdc8",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### 核验人员手机号码重复"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "69300248-e60f-4086-9eb9-2a61e91b5957",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
"import pymysql\n",
|
||
"import openpyxl\n",
|
||
"\n",
|
||
"\n",
|
||
"dict1 = {}\n",
|
||
"dict2 = {}\n",
|
||
"dict3 = {}\n",
|
||
"list1 = []\n",
|
||
"fi_xls = 'data/低碳院人员信息表.xlsx'\n",
|
||
"wb = openpyxl.load_workbook(fi_xls)\n",
|
||
"sheet = wb.active\n",
|
||
"for n in range(2,sheet.max_row+1):\n",
|
||
" if sheet.cell(n,2).value is not None:\n",
|
||
" pn = str(sheet.cell(n,7).value).strip()\n",
|
||
" if pn not in list1:\n",
|
||
" list1.append(pn)\n",
|
||
" else:\n",
|
||
" print(pn)\n",
|
||
" "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "9d5cbdcf-7f46-4a51-a695-258eb0273d2a",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
"import pymysql\n",
|
||
"import openpyxl\n",
|
||
"\n",
|
||
"\n",
|
||
"dict1 = {}\n",
|
||
"dict2 = {}\n",
|
||
"dict3 = {}\n",
|
||
"list1 = []\n",
|
||
"sql = \"SELECT a.phone,a.name,c.unit FROM people as a,places_people as b,_ditan2 as c WHERE a.id =b.people_id AND c.id = b.avatar_id and b.place_id = 139\"\n",
|
||
"cursor.execute(sql)\n",
|
||
"results = cursor.fetchall()\n",
|
||
"for result in results:\n",
|
||
" if result[0] not in list1:\n",
|
||
" list1.append(result[0])\n",
|
||
" else:\n",
|
||
" print(result[0])\n",
|
||
"print(list1)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "1afcf98f-1965-46a9-b549-5dbabcb9a440",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### 统计2022年心理问卷人员"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "ca716a71-d866-413c-bf66-204003cc019a",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
"import pymysql\n",
|
||
"import openpyxl\n",
|
||
"\n",
|
||
"\n",
|
||
"dict1 = {}\n",
|
||
"dict2 = {}\n",
|
||
"dict3 = {}\n",
|
||
"list1 = []\n",
|
||
"sql = \"SELECT a.phone,a.name,c.unit FROM people as a,places_people as b,_ditan2 as c WHERE a.id =b.people_id AND c.id = b.avatar_id and b.place_id = 139\"\n",
|
||
"cursor.execute(sql)\n",
|
||
"results = cursor.fetchall()\n",
|
||
"\n",
|
||
"for result in results:\n",
|
||
" if result[0] != None:\n",
|
||
" dict1[result[0]] = [result[1],result[2]]\n",
|
||
"#print(dict1)\n",
|
||
"\n",
|
||
"sql = \"select * FROM Survey s WHERE s.surveyId IN ('psy4','tcmv2') AND s.updatedAt >'2022-11-01'\"\n",
|
||
"cursor.execute(sql)\n",
|
||
"results = cursor.fetchall()\n",
|
||
"for result in results: \n",
|
||
" #dict2[result[0]] = [str(result[2]).strip(),result[6]]\n",
|
||
" pn = str(result[2]).strip()\n",
|
||
" if pn in dict1.keys():\n",
|
||
" dict2.setdefault(pn,{})\n",
|
||
" dict2[pn].setdefault('item',[])\n",
|
||
" dict2[pn]['name'] = dict1[pn][0]\n",
|
||
" dict2[pn]['unit'] = dict1[pn][1]\n",
|
||
" dict2[pn]['item'].append(result[1])\n",
|
||
"#print(dict2)\n",
|
||
"for k, v in dict2.items():\n",
|
||
" list2 = []\n",
|
||
" ph = k\n",
|
||
" item = ','.join(v['item'])\n",
|
||
" name = v['name']\n",
|
||
" unit = v['unit']\n",
|
||
" list2 = [name,unit,ph,item]\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) \n",
|
||
" "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "d3c7b93b-d132-4de4-a4f1-687b36d06b6d",
|
||
"metadata": {
|
||
"jp-MarkdownHeadingCollapsed": true,
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"### 统计2023年体测人员邮箱信息"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "366a9875-3489-48fd-ba73-f19e106696a2",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import openpyxl\n",
|
||
"import math\n",
|
||
"import json\n",
|
||
"import pymysql\n",
|
||
"\n",
|
||
"fi_xls = 'data/低碳院人员信息表.xlsx'\n",
|
||
"chongming = ['王锐','王楠','郭强','王涛','张静']\n",
|
||
"dict1 = {}\n",
|
||
"dict2 = {}\n",
|
||
"dict3 = {}\n",
|
||
"\n",
|
||
"db = pymysql.connect(host = \"localhost\",user = \"songyi\",password = \"yylzs\",database = \"ydyb\" )\n",
|
||
"cursor = db.cursor()\n",
|
||
"sql = \"SELECT a.name ,a.phone,b.avatar_id FROM people as a,places_people as b WHERE a.id =b.people_id AND b.place_id = 139\"\n",
|
||
"cursor.execute(sql)\n",
|
||
"results = cursor.fetchall()\n",
|
||
"for result in results:\n",
|
||
" if result[0] not in chongming:\n",
|
||
" dict2[result[0]] = [str(result[1]).strip(),result[2]]\n",
|
||
"#print(dict2)\n",
|
||
"wb = openpyxl.load_workbook(fi_xls)\n",
|
||
"sheet = wb.active\n",
|
||
"for n in range(2,sheet.max_row+1):\n",
|
||
" if sheet.cell(n,2).value is not None:\n",
|
||
" email = str(sheet.cell(n,6).value).strip()\n",
|
||
" name = str(sheet.cell(n,2).value).strip()\n",
|
||
" if name in dict2.keys():\n",
|
||
" bh = dict2[name][1]\n",
|
||
" dict1.setdefault(bh,{})\n",
|
||
" dict1[bh]['name'] = name\n",
|
||
" dict1[bh]['phone'] = dict2[name][0]\n",
|
||
" dict1[bh]['email'] = email\n",
|
||
"print(dict1)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "a679a299-e338-42d3-b54e-443e834def72",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import openpyxl\n",
|
||
"import math\n",
|
||
"import json\n",
|
||
"import pymysql\n",
|
||
"\n",
|
||
"fi_xls = 'data/低碳院人员信息表.xlsx'\n",
|
||
"chongming = ['王锐','王楠','郭强','王涛','张静']\n",
|
||
"dict1 = {}\n",
|
||
"dict2 = {}\n",
|
||
"dict3 = {}\n",
|
||
"\n",
|
||
"db = pymysql.connect(host = \"localhost\",user = \"songyi\",password = \"yylzs\",database = \"ydyb\" )\n",
|
||
"cursor = db.cursor()\n",
|
||
"sql = \"SELECT a.name ,a.phone,b.avatar_id FROM people as a,places_people as b WHERE a.id =b.people_id AND b.place_id = 139\"\n",
|
||
"cursor.execute(sql)\n",
|
||
"results = cursor.fetchall()\n",
|
||
"for result in results:\n",
|
||
" bh = result[2]\n",
|
||
" dict2.setdefault(bh,{})\n",
|
||
"\n",
|
||
" dict2[bh]['name'] = str(result[0]).strip()\n",
|
||
" if result[1] is not None:\n",
|
||
" dict2[bh]['phone'] = str(result[1]).strip()\n",
|
||
"#print(dict2)\n",
|
||
"wb = openpyxl.load_workbook(fi_xls)\n",
|
||
"sheet = wb.active\n",
|
||
"for n in range(2,sheet.max_row+1):\n",
|
||
" if sheet.cell(n,2).value not in chongming:\n",
|
||
" email = str(sheet.cell(n,6).value).strip()\n",
|
||
" name = str(sheet.cell(n,2).value).strip()\n",
|
||
" dict1[name] = email\n",
|
||
"for k, v in dict2.items():\n",
|
||
" if v['name'] in dict1.keys():\n",
|
||
" dict2[k]['email'] = dict1[v['name']]\n",
|
||
"#for k, v in dict2.items():\n",
|
||
"# if 'email' not in v.keys():\n",
|
||
"# print(k,v['name'])\n",
|
||
"for n in range(2,sheet.max_row+1):\n",
|
||
" email = str(sheet.cell(n,6).value).strip()\n",
|
||
" name = str(sheet.cell(n,2).value).strip()\n",
|
||
" pn = str(sheet.cell(n,7).value).strip()\n",
|
||
" dict3.setdefault(pn,{})\n",
|
||
" dict3[pn]['email'] = email\n",
|
||
" dict3[pn]['name'] = name\n",
|
||
"\n",
|
||
"for k, v in dict2.items():\n",
|
||
" if 'phone' in v.keys() and v['phone'] in dict3.keys() and v['name'] == dict3[v['phone']]['name']:\n",
|
||
" dict2[k]['email'] = dict3[v['phone']]['email']\n",
|
||
"\n",
|
||
"#for k, v in dict2.items():\n",
|
||
"# if 'email' not in v.keys():\n",
|
||
"# print(k,v['name'],v['phone'])\n",
|
||
"dict2[465]['email'] = '17240051@@ceic.com'\n",
|
||
"filename = 'data/低碳院邮件信息.json'\n",
|
||
"with open(filename, 'w') as fl:\n",
|
||
" json.dump(dict2, fl, ensure_ascii=False)\n",
|
||
"print('ok')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "46e58c6c-de99-4ec9-8bd7-c7e39ba815d5",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
"fl_name = 'data/低碳院邮件信息.json'\n",
|
||
"with open(fl_name,'r') as fl:\n",
|
||
" dict2 = json.load(fl)\n",
|
||
"dict2['465']['email'] = '20024422@ceic.com'\n",
|
||
"filename = 'data/低碳院邮件信息.json'\n",
|
||
"with open(filename, 'w') as fl:\n",
|
||
" json.dump(dict2, fl, ensure_ascii=False)\n",
|
||
"print('ok')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "6350fa35-d539-4719-bc0d-c80db500cc4b",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 导出2023年人员信息"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "2ddc6339-e5c6-4e56-a4d3-885ce7974aec",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
"import pymysql\n",
|
||
"\n",
|
||
"chongming = ['王锐','王楠','郭强','王涛','张静']\n",
|
||
"dict1 = {}\n",
|
||
"dict2 = {}\n",
|
||
"dict3 = {}\n",
|
||
"fl_name = 'data/低碳院邮件信息.json'\n",
|
||
"with open(fl_name,'r') as fl:\n",
|
||
" dict1 = json.load(fl)\n",
|
||
"for k, v in dict1.items():\n",
|
||
" if v['name'] not in chongming and 'email' in v.keys():\n",
|
||
" dict3[v['name']] = {'phone':v['phone'],'email':v['email']}\n",
|
||
"db = pymysql.connect(host = \"localhost\",user = \"songyi\",password = \"yylzs\",database = \"ydyb\" )\n",
|
||
"cursor = db.cursor()\n",
|
||
"sql = \"SELECT a.name ,a.phone,b.avatar_id FROM people as a,places_people as b WHERE a.id =b.people_id AND b.place_id = 139\"\n",
|
||
"cursor.execute(sql)\n",
|
||
"results = cursor.fetchall()\n",
|
||
"for result in results:\n",
|
||
" bh = result[2]\n",
|
||
" \n",
|
||
" name = str(result[0]).strip()\n",
|
||
"\n",
|
||
" dict2.setdefault(bh,{})\n",
|
||
" dict2[bh]['name'] = name\n",
|
||
" if name in dict3.keys():\n",
|
||
" \n",
|
||
" dict2[bh]['email'] = dict3[name]['email']\n",
|
||
" if result[1] is not None:\n",
|
||
" dict2[bh]['phone'] = str(result[1]).strip()\n",
|
||
"dict2[465]['email'] = '17240051@@ceic.com'\n",
|
||
"filename = 'data/低碳院人员信息2023.json'\n",
|
||
"with open(filename, 'w') as fl:\n",
|
||
" json.dump(dict2, fl, ensure_ascii=False)\n",
|
||
"print('ok')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "646d095f-1669-4bc2-885e-c203d0347e72",
|
||
"metadata": {
|
||
"execution": {
|
||
"iopub.execute_input": "2023-03-21T12:04:00.443790Z",
|
||
"iopub.status.busy": "2023-03-21T12:04:00.442938Z",
|
||
"iopub.status.idle": "2023-03-21T12:04:00.448277Z",
|
||
"shell.execute_reply": "2023-03-21T12:04:00.447030Z",
|
||
"shell.execute_reply.started": "2023-03-21T12:04:00.443751Z"
|
||
},
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"### 统计2023年体测报告人员邮件信息"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "31a10956-3b8d-4b5e-895a-2a1da783b4fe",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
"import glob\n",
|
||
"import os\n",
|
||
"\n",
|
||
"filename = 'data/低碳院邮件信息.json'\n",
|
||
"with open(filename,'r') as fl:\n",
|
||
" dict1 = json.load(fl)\n",
|
||
"dict2 = {}\n",
|
||
"fls = glob.glob('file/139/2023-03-08/*.pdf')\n",
|
||
"for fi in fls:\n",
|
||
" bh = os.path.basename(fi).split('.')[0]\n",
|
||
" if bh in dict1.keys() and 'email' in dict1[bh].keys():\n",
|
||
" #print(bh,dict1[bh]['name'],dict1[bh]['email'])\n",
|
||
" #print(bh,dict1[bh]['name'])\n",
|
||
" dict2.setdefault(bh,{})\n",
|
||
" dict2[bh]['name'] = dict1[bh]['name']\n",
|
||
" dict2[bh]['email'] = dict1[bh]['email']\n",
|
||
" dict2[bh]['file'] = fi\n",
|
||
"#print(len(dict2))\n",
|
||
"filename = 'data/低碳院邮件列表.json'\n",
|
||
"with open(filename, 'w') as fl:\n",
|
||
" json.dump(dict2, fl, ensure_ascii=False)\n",
|
||
"print('ok')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "f04de52b-e1ad-4bdf-8cee-7e99fafcff6c",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
"import glob\n",
|
||
"import os\n",
|
||
"\n",
|
||
"filename = 'data/低碳院邮件信息.json'\n",
|
||
"with open(filename,'r') as fl:\n",
|
||
" dict1 = json.load(fl)\n",
|
||
"print(dict1)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "fea20fa1-4cd3-4528-a7d1-dbce05e34fe4",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 根据字典生成邮件列表"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "2310dda9-01cb-43a0-a1db-36f37deb35a4",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
"import glob\n",
|
||
"import os\n",
|
||
"\n",
|
||
"dict1 = {\n",
|
||
" '494': {'name': '王永涛', 'email': '20087867@ceic.com'}, \n",
|
||
" '497': {'name': '王婧', 'email': '20084082@chnenergy.com.cn'}, \n",
|
||
" '499': {'name': '孙华宇', 'email': '20086856@chnenergy.com.cn'}, \n",
|
||
" '500': {'name': '贾建慧', 'email': '20084081@chnenergy.com.cn'}, \n",
|
||
" '501': {'name': '郝国政', 'email': '20084079@chnenergy.com.cn'}, \n",
|
||
" '502': {'name': '崔双双', 'email': '20084083@chnenergy.com.cn'}, \n",
|
||
" '503': {'name': '赵振慧', 'email': '11234518@chnenergy.com.cn'}, \n",
|
||
" '504': {'name': '刘静远', 'email': '20084080@chnenergy.com.cn'}, \n",
|
||
" '505': {'name': '陆斌', 'email': '20087351@ceic.com'}, \n",
|
||
" '506': {'name': '杜鹏', 'email': '12080316@chnenergy.com.cn'}, \n",
|
||
" '507': {'name': '赵亮亮', 'email': '20086857@chnenergy.com.cn'}, \n",
|
||
" '508': {'name': '张文秀', 'email': 'zhangwenxiu@nicenergy.com'}\n",
|
||
"}\n",
|
||
"dict2 = {}\n",
|
||
"fls = glob.glob('file/139/2022-12-31/*.pdf')\n",
|
||
"for fi in fls:\n",
|
||
" bh = os.path.basename(fi).split('.')[0]\n",
|
||
" if bh in dict1.keys() and 'email' in dict1[bh].keys():\n",
|
||
" #print(bh,dict1[bh]['name'],dict1[bh]['email'])\n",
|
||
" #print(bh,dict1[bh]['name'])\n",
|
||
" dict2.setdefault(bh,{})\n",
|
||
" dict2[bh]['name'] = dict1[bh]['name']\n",
|
||
" dict2[bh]['email'] = dict1[bh]['email']\n",
|
||
" dict2[bh]['file'] = fi\n",
|
||
"#print(len(dict2))\n",
|
||
"filename = 'data/低碳院邮件列表(新增).json'\n",
|
||
"with open(filename, 'w') as fl:\n",
|
||
" json.dump(dict2, fl, ensure_ascii=False)\n",
|
||
"print('ok')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "45c9cd7b-db12-4f60-b550-f9f3f550ba93",
|
||
"metadata": {
|
||
"execution": {
|
||
"iopub.execute_input": "2023-03-21T13:40:39.830416Z",
|
||
"iopub.status.busy": "2023-03-21T13:40:39.829533Z",
|
||
"iopub.status.idle": "2023-03-21T13:40:39.834469Z",
|
||
"shell.execute_reply": "2023-03-21T13:40:39.833400Z",
|
||
"shell.execute_reply.started": "2023-03-21T13:40:39.830377Z"
|
||
},
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"### 群发邮件"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "7773fb0a-6644-4c8e-8424-24ebb9f04844",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"from email.mime.text import MIMEText\n",
|
||
"from email.mime.multipart import MIMEMultipart\n",
|
||
"from email.mime.application import MIMEApplication\n",
|
||
"from email.header import Header\n",
|
||
"import smtplib\n",
|
||
"import requests\n",
|
||
"import time\n",
|
||
"import re\n",
|
||
"import json\n",
|
||
" \n",
|
||
"\n",
|
||
"filename = 'data/低碳院邮件列表(新增).json'\n",
|
||
"\n",
|
||
"with open(filename,'r') as fl:\n",
|
||
" m_xx = json.load(fl)\n",
|
||
"for k, v in m_xx.items():\n",
|
||
" m_bh = str(k).rjust(5,\"0\")\n",
|
||
" fl_name = v['file']\n",
|
||
" fl = f\"{m_bh}-{v['name']}.pdf\"\n",
|
||
" m_rec = v['email']\n",
|
||
" \n",
|
||
" from_addr = 'kmingedu@163.com' #发件邮箱\n",
|
||
" password = 'GKWUZXMVYKSSUSSL' #邮箱密码\n",
|
||
" smtp_server = 'smtp.163.com' #SMTP服务器,以新浪为例\n",
|
||
" server = smtplib.SMTP(smtp_server,25) #第二个参数为默认端口为25,有些邮件有特殊端口\n",
|
||
" msg = MIMEMultipart()\n",
|
||
" msg['Subject'] = Header(\"低碳清洁能源研究院体质监测报告(2023年3月)\",'utf-8')\n",
|
||
" msg['From'] = Header('北京坤铭体质监测评估中心')\n",
|
||
" msg['To'] = Header(m_rec)\n",
|
||
"\n",
|
||
" from_addr = 'kmingedu@163.com' #发件邮箱\n",
|
||
" password = 'GKWUZXMVYKSSUSSL' #邮箱密码\n",
|
||
" to_addr = m_rec #收件邮箱\n",
|
||
" att1 =MIMEApplication(open(fl_name, 'rb').read())\n",
|
||
" #att1[\"Content-Type\"] = 'application/octet-stream'\n",
|
||
" # 这里的filename可以任意写,写什么名字,邮件中显示什么名字\n",
|
||
" att1.add_header('Content-Disposition','attachment',filename=fl)\n",
|
||
" msg.attach(att1)\n",
|
||
" try:\n",
|
||
" server.login(from_addr,password) #登录邮箱\n",
|
||
" server.sendmail(from_addr,to_addr,msg.as_string()) #将msg转化成string发出\n",
|
||
" server.quit\n",
|
||
" time.sleep(3)\n",
|
||
" print(f'{fl}邮件发送成功!')\n",
|
||
" except smtplib.SMTPException:\n",
|
||
" print (\"Error: 无法发送邮件\")\n",
|
||
" \n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "39575670-4a54-4374-8c26-4523b5782c78",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 统计2022年12月体测报告人员邮件信息"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "ec395435-7596-4de8-9f41-f45c0c744c3d",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
"import glob\n",
|
||
"import os\n",
|
||
"\n",
|
||
"filename = 'data/低碳院邮件信息.json'\n",
|
||
"with open(filename,'r') as fl:\n",
|
||
" dict1 = json.load(fl)\n",
|
||
"dict2 = {}\n",
|
||
"fls = glob.glob('file/139/2022-12-31/*.pdf')\n",
|
||
"for fi in fls:\n",
|
||
" bh = os.path.basename(fi).split('.')[0]\n",
|
||
" if bh in dict1.keys() and 'email' in dict1[bh].keys():\n",
|
||
" #print(bh,dict1[bh]['name'],dict1[bh]['email'])\n",
|
||
" #print(bh,dict1[bh]['name'])\n",
|
||
" dict2.setdefault(bh,{})\n",
|
||
" dict2[bh]['name'] = dict1[bh]['name']\n",
|
||
" dict2[bh]['email'] = dict1[bh]['email']\n",
|
||
" dict2[bh]['file'] = fi\n",
|
||
"#print(len(dict2))\n",
|
||
"filename = 'data/低碳院邮件列表202212.json'\n",
|
||
"with open(filename, 'w') as fl:\n",
|
||
" json.dump(dict2, fl, ensure_ascii=False)\n",
|
||
"print('ok')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "977e29b0-2b3f-4941-b33a-0b3b5ac4aced",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
"import glob\n",
|
||
"import os\n",
|
||
"\n",
|
||
"filename = 'data/低碳院邮件信息.json'\n",
|
||
"with open(filename,'r') as fl:\n",
|
||
" dict1 = json.load(fl)\n",
|
||
"dict2 = {}\n",
|
||
"fls = glob.glob('file/139/2022-12-31/*.pdf')\n",
|
||
"for fi in fls:\n",
|
||
" bh = os.path.basename(fi).split('.')[0]\n",
|
||
" if bh in dict1.keys() and 'email' not in dict1[bh].keys():\n",
|
||
" #print(bh,dict1[bh]['name'],dict1[bh]['email'])\n",
|
||
" print(bh,dict1[bh]['name'])\n",
|
||
" "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "e8d5cc48-a23d-44d9-9130-6902452d5d18",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"from email.mime.text import MIMEText\n",
|
||
"from email.mime.multipart import MIMEMultipart\n",
|
||
"from email.mime.application import MIMEApplication\n",
|
||
"from email.header import Header\n",
|
||
"import smtplib\n",
|
||
"import requests\n",
|
||
"import time\n",
|
||
"import re\n",
|
||
"import json\n",
|
||
" \n",
|
||
"\n",
|
||
"filename = 'data/低碳院邮件列表(新增).json'\n",
|
||
"\n",
|
||
"with open(filename,'r') as fl:\n",
|
||
" m_xx = json.load(fl)\n",
|
||
"for k, v in m_xx.items():\n",
|
||
" m_bh = str(k).rjust(5,\"0\")\n",
|
||
" fl_name = v['file']\n",
|
||
" fl = f\"{m_bh}-{v['name']}.pdf\"\n",
|
||
" m_rec = v['email']\n",
|
||
" \n",
|
||
" from_addr = 'kmingedu@163.com' #发件邮箱\n",
|
||
" password = 'GKWUZXMVYKSSUSSL' #邮箱密码\n",
|
||
" smtp_server = 'smtp.163.com' #SMTP服务器,以新浪为例\n",
|
||
" server = smtplib.SMTP(smtp_server,25) #第二个参数为默认端口为25,有些邮件有特殊端口\n",
|
||
" msg = MIMEMultipart()\n",
|
||
" msg['Subject'] = Header(\"低碳清洁能源研究院体质监测报告(2022年12月)\",'utf-8')\n",
|
||
" msg['From'] = Header('北京坤铭体质监测评估中心')\n",
|
||
" msg['To'] = Header(m_rec)\n",
|
||
"\n",
|
||
" from_addr = 'kmingedu@163.com' #发件邮箱\n",
|
||
" password = 'GKWUZXMVYKSSUSSL' #邮箱密码\n",
|
||
" to_addr = m_rec #收件邮箱\n",
|
||
" att1 =MIMEApplication(open(fl_name, 'rb').read())\n",
|
||
" #att1[\"Content-Type\"] = 'application/octet-stream'\n",
|
||
" # 这里的filename可以任意写,写什么名字,邮件中显示什么名字\n",
|
||
" att1.add_header('Content-Disposition','attachment',filename=fl)\n",
|
||
" msg.attach(att1)\n",
|
||
" try:\n",
|
||
" server.login(from_addr,password) #登录邮箱\n",
|
||
" server.sendmail(from_addr,to_addr,msg.as_string()) #将msg转化成string发出\n",
|
||
" server.quit\n",
|
||
" time.sleep(3)\n",
|
||
" print(f'{fl}邮件发送成功!')\n",
|
||
" except smtplib.SMTPException:\n",
|
||
" print (\"Error: 无法发送邮件\")\n",
|
||
" "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "b4cb8b9c-f9ad-4a80-a5d6-dff5edb40e79",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 百日筑基分析"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "aa0e3dc6-053b-44a8-bbaa-7ec2a7790059",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 导入人员信息"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "1eb6ebd0-c78c-4f6d-b3fd-a27e240d216c",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import openpyxl\n",
|
||
"import json\n",
|
||
"\n",
|
||
"fi_xls = 'data/低碳院小鹅通人员情况表.xlsx'\n",
|
||
"list1 = []\n",
|
||
"dict1 = {}\n",
|
||
"dict2 = {}\n",
|
||
"dict3 = {}\n",
|
||
"wb = openpyxl.load_workbook(fi_xls)\n",
|
||
"sheet = wb.active\n",
|
||
"for n in range(2, sheet.max_row+1):\n",
|
||
" if sheet.cell(n,1).value is None:\n",
|
||
" break\n",
|
||
" else: \n",
|
||
" name = sheet.cell(n, 1).value.strip()\n",
|
||
" phone = str(sheet.cell(n, 5).value).strip()\n",
|
||
" #检查手机号码是否有重复\n",
|
||
" #if phone not in list1:\n",
|
||
" # list1.append(phone)\n",
|
||
" #else:\n",
|
||
" # print(name,phone)\n",
|
||
" dict1.setdefault(phone,{})\n",
|
||
" dict1[phone]['name'] = name\n",
|
||
" dict1[phone]['unit'] = sheet.cell(n, 6).value\n",
|
||
"filename = 'data/低碳院小鹅通人员信息.json'\n",
|
||
"with open(filename, 'w') as fl:\n",
|
||
" json.dump(dict1, fl, ensure_ascii=False)\n",
|
||
"print('ok')\n",
|
||
" \n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "fbd0c055-4d86-4383-9205-5b8888b8c686",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 导入小鹅通人员信息 "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "162e0573-e1c7-4538-bffa-c34eb5b40d8a",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
"import os\n",
|
||
"import glob\n",
|
||
"import csv\n",
|
||
"\n",
|
||
"fi_path = 'data/小鹅通/'\n",
|
||
"dict1 = {}\n",
|
||
"fl = glob.glob(f'{fi_path}*.csv')\n",
|
||
"list1 = []\n",
|
||
"for fn in fl:\n",
|
||
" #with open(fn,'r',newline='',encoding='gb18030') as csv_file:\n",
|
||
" with open(fn,'r',newline='') as csv_file:\n",
|
||
" fl1 = csv.reader(csv_file,delimiter=',')\n",
|
||
" header = next(fl1) \n",
|
||
" for line in fl1:\n",
|
||
" #line = re.sub('[\\r\\n\\f ]{1,}', '', line)\n",
|
||
" list1.append(line)\n",
|
||
"for item in list1:\n",
|
||
" dict1.setdefault(item[0],{})\n",
|
||
" dict1[item[0]]['nick'] = item[1] \n",
|
||
" dict1[item[0]]['phone'] = item[11].strip()\n",
|
||
" dict1[item[0]]['progress'] = item[3]\n",
|
||
"filename = 'data/小鹅通人员信息.json'\n",
|
||
"with open(filename,'w') as fl:\n",
|
||
" json.dump(dict1, fl,ensure_ascii=False) "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "8d9ec0a6-0b4d-456d-a886-ccccf3e29f3d",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 关联低碳院小鹅通人员信息 "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "b48f9fba-d8e9-4d47-a456-48065a912f5f",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
"import os\n",
|
||
"\n",
|
||
"filename = 'data/小鹅通人员信息.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",
|
||
"for k, v in dict1.items():\n",
|
||
" phone = v['phone']\n",
|
||
" if phone in dict2.keys():\n",
|
||
" dict2[phone]['id'] = k\n",
|
||
" dict2[phone]['nick'] = v['nick']\n",
|
||
" dict2[phone]['progress'] = v['progress']\n",
|
||
"filename = 'data/低碳院小鹅通人员信息.json'\n",
|
||
"with open(filename, 'w') as fl:\n",
|
||
" json.dump(dict2, fl, ensure_ascii=False)\n",
|
||
"print('ok')\n",
|
||
" "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "5ee64db3-7e59-4263-ae5b-d8529f1dca14",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 导入小鹅通打卡信息 "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "6fc5dd93-790a-4708-8dcc-98a74d7ce14d",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import openpyxl\n",
|
||
"import json\n",
|
||
"import os\n",
|
||
"import glob\n",
|
||
"import csv\n",
|
||
"import re\n",
|
||
"\n",
|
||
"\n",
|
||
"fi_path = 'data/小鹅通/打卡/'\n",
|
||
"fl = glob.glob(f'{fi_path}*.csv')\n",
|
||
"\n",
|
||
"dict1 = {}\n",
|
||
"for fn in fl:\n",
|
||
" with open(fn,'r',newline='') as csv_file:\n",
|
||
" list1 = []\n",
|
||
" fl1 = csv.reader(csv_file,delimiter=',')\n",
|
||
" group = re.findall(r'百日筑基”健康打卡—(.+)的打卡信息》',fn)[0]\n",
|
||
" \n",
|
||
" #print(group)\n",
|
||
" header = next(fl1)\n",
|
||
" #print(header)\n",
|
||
" header = next(fl1)\n",
|
||
" list2 = []\n",
|
||
" for line in fl1: \n",
|
||
" list2.append(line)\n",
|
||
" dict1[group] = list2\n",
|
||
"list1 = []\n",
|
||
"\n",
|
||
"for item in header:\n",
|
||
" \n",
|
||
" item = re.sub(r'\\t','',item)\n",
|
||
" print(item)\n",
|
||
" list1.append(item)\n",
|
||
"print(list1) \n",
|
||
"dict1['header'] = list1\n",
|
||
"#print(dict1)\n",
|
||
"\n",
|
||
"filename = 'data/小鹅通打卡信息.json'\n",
|
||
"with open(filename,'w') as fl:\n",
|
||
" json.dump(dict1, fl,ensure_ascii=False) "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "d296a9f0-1fdd-483e-839e-b994d647c7f2",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 统计小鹅通打卡信息 "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "204fcae8-32e6-4016-b533-b8a8a750580e",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
"import time\n",
|
||
"import csv\n",
|
||
"\n",
|
||
"filename = 'data/小鹅通打卡信息.json'\n",
|
||
"with open(filename,'r') as fl:\n",
|
||
" dict1 = json.load(fl) \n",
|
||
"filename = 'data/低碳院小鹅通人员信息.json'\n",
|
||
"with open(filename,'r') as fl:\n",
|
||
" dict2 = json.load(fl) \n",
|
||
"jiezhiri = '2022-11-21'\n",
|
||
"list_rq = dict1['header']\n",
|
||
"#print(list_rq)\n",
|
||
"num = list_rq.index(jiezhiri)\n",
|
||
"print(num)\n",
|
||
"list1 = list_rq[1:num+1]\n",
|
||
"list2 = []\n",
|
||
"#print(list1)\n",
|
||
"for k, v in dict1.items():\n",
|
||
" if k!='header':\n",
|
||
" for item in v:\n",
|
||
" nick = item[0]\n",
|
||
" record = item[1:num+1]\n",
|
||
" list2.append([k,nick,record.count('√')])\n",
|
||
"print(list2)\n",
|
||
"for item in list2:\n",
|
||
" nick = item[1]\n",
|
||
" unit = item[0]\n",
|
||
" for k, v in dict2.items():\n",
|
||
" if v['nick'] == nick and unit == v['unit']:\n",
|
||
" dict2[k]['daka'] = item[2]\n",
|
||
"\n",
|
||
"filename = 'data/低碳院小鹅通人员信息.json'\n",
|
||
"with open(filename, 'w') as fl:\n",
|
||
" json.dump(dict2, fl, ensure_ascii=False)\n",
|
||
"print('ok') "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "2bfd1f6b-c863-46fe-95f5-48a233c376fe",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 统计低碳院百日强基情况"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "c12b2d1b-774e-40c1-8a80-df3fa5889b61",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import json\n",
|
||
"import time\n",
|
||
"import csv\n",
|
||
"\n",
|
||
"filename = 'data/低碳院小鹅通人员信息.json'\n",
|
||
"with open(filename,'r') as fl:\n",
|
||
" dict2 = json.load(fl) \n",
|
||
"list1 = []\n",
|
||
"for k, v in dict2.items():\n",
|
||
" list2 = []\n",
|
||
" unit = v['unit']\n",
|
||
" name = v['name']\n",
|
||
" progress = v['progress']\n",
|
||
" if 'daka' in v.keys():\n",
|
||
" daka = v['daka']\n",
|
||
" else:\n",
|
||
" daka = 0\n",
|
||
" list2 = [unit,name,progress,daka]\n",
|
||
" list1.append(list2)\n",
|
||
"\n",
|
||
"filename = 'data/低碳院百日强基情况表(截止到20221121).xlsx'\n",
|
||
"wb = openpyxl.Workbook()\n",
|
||
"sheet = wb.active\n",
|
||
"\n",
|
||
"for row in list1:\n",
|
||
" sheet.append(row)\n",
|
||
" \n",
|
||
"wb.save(filename) \n",
|
||
" "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "9668d7d6-d51d-4fbe-8c0c-c8fa6066aad1",
|
||
"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.10.6"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|