{ "cells": [ { "cell_type": "markdown", "id": "4b749231-7ab9-4dcd-8cfd-7b9be485d3c6", "metadata": { "tags": [] }, "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": { "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": { "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": { "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": { "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": {}, "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", "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": "c27c6f4b-d0ed-40e8-aed9-09662edd21c6", "metadata": {}, "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": {}, "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": {}, "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", "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' not in dict1[bh].keys():\n", " #print(bh,dict1[bh]['name'],dict1[bh]['email'])\n", " print(bh,dict1[bh]['name'])\n", " " ] }, { "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": 45, "id": "ec395435-7596-4de8-9f41-f45c0c744c3d", "metadata": { "execution": { "iopub.execute_input": "2023-03-21T13:37:27.837531Z", "iopub.status.busy": "2023-03-21T13:37:27.836685Z", "iopub.status.idle": "2023-03-21T13:37:27.851993Z", "shell.execute_reply": "2023-03-21T13:37:27.850923Z", "shell.execute_reply.started": "2023-03-21T13:37:27.837490Z" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "106\n" ] } ], "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": 44, "id": "977e29b0-2b3f-4941-b33a-0b3b5ac4aced", "metadata": { "execution": { "iopub.execute_input": "2023-03-21T13:37:12.258067Z", "iopub.status.busy": "2023-03-21T13:37:12.257187Z", "iopub.status.idle": "2023-03-21T13:37:12.268960Z", "shell.execute_reply": "2023-03-21T13:37:12.267879Z", "shell.execute_reply.started": "2023-03-21T13:37:12.258026Z" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "497 王婧\n", "499 孙华宇\n", "502 崔双双\n" ] } ], "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": {}, "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/低碳院邮件列表202212.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", " " ] } ], "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 }