#!/usr/bin/python3
#
import xlwings as xw
import requests
import json
import time
import psutil
import sys
import ctypes
import tkinter as tk
from tkinter import messagebox
def is_excel_running():
for proc in psutil.process_iter(['name']):
if proc.info['name'] == 'EXCEL.EXE':
return True
return False
def kill_excel():
for proc in psutil.process_iter(['name', 'pid']):
if proc.info['name'] == 'EXCEL.EXE':
proc.kill()
def show_message(message):
# 创建主窗口
root = tk.Tk()
root.title("提示")
# 创建一个标签来显示消息
label = tk.Label(root, text=message, padx=20, pady=20)
label.pack()
# 创建一个函数,在 3 秒后关闭窗口
def close_window():
root.destroy()
# 设置 3000 毫秒后调用 close_window 函数
root.after(3000, close_window)
# 启动 tkinter 的 mainloop
root.mainloop()
is_excel_running = is_excel_running()
if is_excel_running:
kill_excel()
time.sleep(5) #暂停5秒钟
path = 'aaaaaaabbbb.xlsx'
app = xw.App(visible=False, add_book=False)
app.display_alerts = False
app.screen_updating = False
# 打开 Excel 文件
try:
workbook = app.books.open(path) # 替换为你的 Excel 文件路径
sheet = workbook.sheets['更改仲裁主管']
data_A = sheet.range('A2').expand('down').value
data_A_list = [str(item).split('.')[0] if isinstance(item, float) else str(item) for item in data_A]
data_B = sheet.range('B2').expand('down').value
data_B_list = [str(item).split('.')[0] if isinstance(item, float) else str(item) for item in data_B]
data_C_list = sheet.range('C2').expand('down').value
data_D_list = sheet.range('D2').expand('down').value
data_E_list = sheet.range('E2').expand('down').value
data_F_list = sheet.range('F2').expand('down').value
data_G_list = sheet.range('G2').expand('down').value
data_H_list = sheet.range('H2').expand('down').value
data_I_list = sheet.range('I2').expand('down').value
data_J_list = sheet.range('J2').expand('down').value
# print(type(data_A_list))
# print(data_A_list)
workbook.close() # 如果你想在 Excel 中保留文件,请设置 save=False
app.quit() # 退出 Excel 应用
time.sleep(5) #暂停5秒钟
combined_list = [
{'field_person_gh': field_person_gh, 'field_manager_gh': field_manager_gh, 'field_change_status': field_change_status,
'field_person_name': field_person_name, 'field_manager_name': field_manager_name,'field_operation_time':str(field_operation_time),
'field_person_email': field_person_email, 'field_manager_email': field_manager_email, 'field_person_status': field_person_status,
'field_manager_status': field_manager_status}
for field_person_gh, field_manager_gh, field_change_status,field_change_status,field_person_name,
field_manager_name,field_operation_time,field_person_email,field_manager_email,field_person_status,
field_manager_status
in zip(data_A_list, data_B_list, data_C_list, data_C_list, data_D_list, data_E_list, data_F_list, data_G_list, data_H_list, data_I_list, data_J_list)
]
# print(combined_list)
response = requests.post(url, json=combined_list)
# 打印响应状态码
print(f'Status Code: {response.status_code}')
# 打印响应内容
# print('Response Body:')
# print(response.text)
if(response.text == '[]'):
print("not ok")
sys.exit(0)
# print("AAAAA")
# print(response.text)
# print("BBBBB")
json_data = json.loads(response.text)
# print(type(json_data))
data_A_set = set(data_A_list) # 其实就是excel中的个人帐号列表
json_data_new = [item for item in json_data if item["field_person_gh"] not in data_A_set]
json_data = json_data_new
# print(json_data_new)
# 将 JSON 数据转换为列表
data = [
[
item["field_person_gh"],
item["field_manager_gh"],
item["field_change_status"],
item["field_person_name"],
item["field_manager_name"],
item["field_operation_time"],
item["field_person_email"],
item["field_manager_email"],
item["field_person_status"],
item["field_manager_status"]
]
for item in json_data
]
app = xw.App(visible=False, add_book=False)
app.display_alerts = False
app.screen_updating = False
# 打开 Excel 文件
workbook = app.books.open(path) # 替换为你的 Excel 文件路径
sheet = workbook.sheets['更改仲裁主管']
last_row = sheet.range('A1').current_region.last_cell.row
print(last_row) #最后一行的行号
# print(data)
# 将新的数据追加到工作表
sheet.range(f'A{last_row + 1}').value = data # 从 last_row+1 行开始写入新数据
workbook.save(path)
workbook.close() # 如果你想在 Excel 中保留文件,请设置 save=False
app.quit() # 退出 Excel 应用
except Exception as err:
kill_excel()
show_message('程序运行中不能打开此excel,可能需要重新运行程序!')
time.sleep(3) # 暂停3秒钟
show_message('程序处理excel结束!')