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文件并读取内容
workbook = openpyxl.load_workbook(filename)
worksheet = workbook.active
# 输出表格中的内容并计算能耗
for row in worksheet.iter_rows(min_row=2):
row_text=''
for cell in row:
#print(cell.value,end=',')
row_text+=f'{cell.value},'
RQ = row[0].value
Q = float(row[1].value)
T = float(row[2].value)
f_w = float(row[3].value)
H = float(row[4].value)
I = float(row[5].value)
U = float(row[6].value)
H_d = float(row[7].value)
#油,水的密度,t/m3
ρ_o=0.85
ρ_w=1
g = 9.8
#原油密度ρ,t/m3
ρ=round((1-f_w/100)*ρ_o+f_w/100*ρ_w, 3)
#潜油电泵有效功率P(输出功率),KW
P = round(Q*H*ρ*g/86400,3)
# 电动机有效功率(输入功率)Ns,KW
cos = 0.7 # 电动机功率因数
Ns =round(m.sqrt(3)*I*U/1000*cos,3)
# 电潜泵的效率η
η = round(P/Ns,3)
# 百米吨液用电单耗X
W = round(U /1000* I * T, 3) #W:耗电量
X = round(W/(Q*H_d)*100*ρ, 3)
conclude = (RQ,P,Ns, η, X)
print(str(conclude).replace("(","").replace(")","")) #.replace("(","").replace(")","")去除表格中的()
text_create('电潜泵能耗计算结果', str(conclude).replace("(","").replace(")",""))
data = open('C:\\Users\\10154\\Desktop\\电潜泵能耗计算结果.txt', 'r', encoding='utf_8')
datas = data.readlines() # readlines()依次读取所有行(直到结束符 EOF)并返回列表
wb = Workbook()
sheet = wb.active
first_line = ('日期','潜油电泵有效功率P(KW)', '电动机有效功率Ns(KW)', '电潜泵的效率η','百米吨液用电单耗X(KWh/100mt)')
#在excel中建立第一行title
for i in range(len(first_line)):
sheet.cell(1, i + 1, first_line[i])
for index, row in enumerate(datas):
d = row.split() # split()通过指定分隔符对字符串进行切片,并返回分割后的字符串列表
for col in range(len(d)):
sheet.cell(index + 2, col + 1, d[col].replace(',', '')) # 表示我们要对第i行第j列单元格进行修改
# sheet.cell(worksheet.row[0])
wb.save('电潜泵能耗计算结果.xlsx')
#创造窗口
window=tk.Tk()
window.title('welcome to flower')
window.geometry('500x700')
#给窗口添加图片
canvas=tk.Canvas(window,height=200,width=500)
image_file=tk.PhotoImage(file='C:\\Users\\10154\\Desktop\\1130.gif')
image=canvas.create_image(0,0,anchor='nw',image=image_file)
canvas.pack(side='top')
#输入信息
tk.Label(window,text='含水率f_w:').place(x=50,y=150)
tk.Label(window,text='油的密度ρ_o:').place(x=50,y=190)
tk.Label(window,text='水的密度ρ_w:').place(x=50,y=230)
tk.Label(window,text='电潜泵扬程H:').place(x=50,y=270)
tk.Label(window,text='产液量Q:').place(x=50,y=310)
tk.Label(window,text='电动机运行电流I:').place(x=50,y=350)
tk.Label(window,text='电动机运行电压U:').place(x=50,y=390)
tk.Label(window,text='水泵运行时间T:').place(x=50,y=430)
tk.Label(window,text='动液面深度H_d:').place(x=50,y=470)
var_f_w=tk.StringVar()
entry_f_w=tk.Entry(window,textvariable=var_f_w)
entry_f_w.place(x=160,y=150)
var_ρ_o=tk.StringVar()
entry_ρ_o=tk.Entry(window,textvariable=var_ρ_o)
entry_ρ_o.place(x=160,y=190)
var_ρ_w=tk.StringVar()
entry_ρ_w=tk.Entry(window,textvariable=var_ρ_w)
entry_ρ_w.place(x=160,y=230)
var_H=tk.StringVar()
entry_H=tk.Entry(window,textvariable=var_H)
entry_H.place(x=160,y=270)
var_Q=tk.StringVar()
entry_Q=tk.Entry(window,textvariable=var_Q)
entry_Q.place(x=160,y=310)
var_I=tk.StringVar()
entry_I=tk.Entry(window,textvariable=var_I)
entry_I.place(x=160,y=350)
var_U=tk.StringVar()
entry_U=tk.Entry(window,textvariable=var_U)
entry_U.place(x=160,y=390)
var_T=tk.StringVar()
entry_T=tk.Entry(window,textvariable=var_T)
entry_T.place(x=160,y=430)
var_H_d=tk.StringVar()
entry_H_d=tk.Entry(window,textvariable=var_H_d)
entry_H_d.place(x=160,y=470)
出现报错,但是文本里面有计算出来的结果,其不存在None值,不知道为什么,求解答
Exception in Tkinter callback
Traceback (most recent call last):
File "F:\Anaconda3\lib\tkinter\__init__.py", line 1921, in __call__
return self.func(*args)
File "E:\pythonProject2\电潜泵.py", line 40, in select_file
T = float(row[2].value)
TypeError: float() argument must be a string or a real number, not 'NoneType'
报错很明确,这行错了
T = float(row[2].value)
你查查这行存在吗?存在的话有没有可能是空置。细心些就能解决
不知道你这个问题是否已经解决, 如果还没有解决的话: