```python
import tkinter as tk
from tkinter import filedialog
import openpyxl
from openpyxl import Workbook
def text_create(name, msg):
desktop_path = "C:\\Users\\10154\\Desktop\\" # 新创建的txt文件的存放路径
full_path = desktop_path + name + '.txt' # 也可以创建一个.doc的word文档
file = open(full_path, 'a')
file.write(msg) # msg也就是文本内容
file.write('\n') #显示写入换行
# file.close()
def select_file():
# 选择Excel文件
filename = filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx")])
# 打开Excel文件并读取内容
Wk = openpyxl.load_workbook(filename)
worksheet = Wk.active
# 将Q_WS, P_Jun, λ添加到标题行
worksheet.cell(1, 8).value = 'Q_WS'
worksheet.cell(1, 9).value = 'P_Jun'
worksheet.cell(1, 10).value = 'λ'
# 输出表格中的内容并计算能耗
for row in worksheet.iter_rows(min_row=2):
row_text=''
for cell in row:
#print(cell.value,end=',')
row_text+=f'{cell.value},'
t0 = float(row[0].value)
te = float(row[1].value)
ε = float(row[2].value)
P_R = float(row[3].value)
P_Z = float(row[4].value)
L = float(row[5].value)
Q_s = float(row[6].value)
Q = float(row[7].value)
Q_WS = round((t0-te)*ε/L,2)
P_Jun =round((P_R-P_Z)/L,2)
λ = round(Q_s/Q,2)
conclude = (Q_WS, P_Jun, λ)
print(str(conclude))
text_create('海底管道能耗计算结果', str(conclude))
wb = Workbook()
sheet = wb.active
data = open('C:\\Users\\10154\\Desktop\\海底管道能耗计算结果.txt', 'r', encoding='utf_8')
datas = data.readlines() # readlines()依次读取所有行(直到结束符 EOF)并返回列表
# 向表格中添加Q_WS, P_Jun, λ数据
row[7].offset(column=1).value = Q_WS
row[7].offset(column=2).value = P_Jun
row[7].offset(column=3).value = λ
for index, row in enumerate(datas):
d = row.split() # split()通过指定分隔符对字符串进行切片,并返回分割后的字符串列表
for col in range(len(d)):
sheet.cell(index + 1, col + 1, d[col]) # 表示我们要对第i行第j列单元格进行修改
# sheet.cell(worksheet.row[0])
wb.save('海底管道能耗计算结果.xlsx')
# 创建一个窗口
root=tk.Tk()
# 设置窗口的标题和大小
root.title("导入Excel文件")
root.geometry("300x200")
# 创建一个按钮,用于选择Excel文件
button = tk.Button(root, text="选择文件", command=select_file)
button.pack()
# 进入主循环
root.mainloop()
```
以上单排行榜为例:
url = 'http://lol.qq.com/guides/hero.shtml?ADTAG=cooperation.glzx.web'
# 创建一个参数对象,用来控制chrome以无界面的方式打开
options = Options()
# 后面的两个是固定写法 必须这么写
options.add_argument('--headless')
options.add_argument('--disable-gpu')
# 创建浏览器对象
driver = webdriver.Chrome(options=options)
driver.get(url)
# 获取上单英雄的所有数据
driver.find_element(By.XPATH, '//a[@data-types="top"]').click()
element = driver.find_element(By.ID, 'rankTable')
data = element.text.split('\n')
data.pop(0)
# 新建一个工作簿
wb = Workbook()
ws1 = wb.active
# 更改sheet名称
ws1.title = '上单英雄'
# excel表单第一行
first_line = ('排名', '排名波动', '英雄', '位置', '胜率', '登场率')
for i in range(len(first_line)):
ws1.cell(1, i + 1, first_line[i])
# 排名波动空值
employ = [28, 43]
for i in range(46):
if i in employ:
data.insert(i * 5 + 1, '0')
# 将获取的数据进行处理并保存
rank = data[i * 5]
rank_float = data[i * 5 + 1]
hero = data[i * 5 + 2]
location = data[i * 5 + 3]
win_rate = data[i * 5 + 4].split(' ')[0]
appearance_rate = data[i * 5 + 4].split(' ')[1]
# 将数据写入excel表格
ws1.cell(i + 2, 1, rank)
ws1.cell(i + 2, 2, rank_float)
ws1.cell(i + 2, 3, hero)
ws1.cell(i + 2, 4, location)
ws1.cell(i + 2, 5, win_rate)
ws1.cell(i + 2, 6, appearance_rate)
# 保存excel表
wb_name = '英雄联盟上单英雄总和排行榜数据.xlsx'
wb.save(wb_name)
from openpyxl import Workbook
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
url = 'http://lol.qq.com/guides/hero.shtml?ADTAG=cooperation.glzx.web'
# 创建一个参数对象,用来控制chrome以无界面的方式打开
options = Options()
# 后面的两个是固定写法 必须这么写
options.add_argument('--headless')
options.add_argument('--disable-gpu')
# 创建浏览器对象
driver = webdriver.Chrome(options=options)
driver.get(url)
driver.implicitly_wait(10)
# 新建一个工作簿
wb = Workbook()
ws1 = wb.active
ws1.title = '上单英雄'
# excel表单第一行
first_line = ('排名', '排名波动', '英雄', '位置', '胜率', '登场率')
for i in range(len(first_line)):
ws1.cell(1, i + 1, first_line[i])
# 获取上单英雄的所有数据
driver.find_element(By.XPATH, '//a[@data-types="top"]').click()
element = driver.find_element(By.ID, 'rankTable')
data = element.text.split('\n')
data.pop(0)
# 排名波动空值
employ = [28, 43]
for i in range(46):
if i in employ:
data.insert(i * 5 + 1, '0')
# 将获取的数据进行处理并保存
rank = data[i * 5]
rank_float = data[i * 5 + 1]
hero = data[i * 5 + 2]
location = data[i * 5 + 3]
win_rate = data[i * 5 + 4].split(' ')[0]
appearance_rate = data[i * 5 + 4].split(' ')[1]
# 将数据写入excel表格
ws1.cell(i + 2, 1, rank)
ws1.cell(i + 2, 2, rank_float)
ws1.cell(i + 2, 3, hero)
ws1.cell(i + 2, 4, location)
ws1.cell(i + 2, 5, win_rate)
ws1.cell(i + 2, 6, appearance_rate)
# 保存excel表
wb_name = '英雄联盟上单英雄总和排行榜数据.xlsx'
wb.save(wb_name)
print(rank, rank_float, hero, location, win_rate, appearance_rate)