本篇教程由作者设定未经允许禁止转载。
我随便写了个计算涡轮全部结构的发电数据及材料需要。
# -*- coding:utf-8 -*-
import math;
import os;
import xlsxwriter as xw;
# 本工具用于V10以下
# 默认值
i = 2 # 从第二行开始写数据
def xw_toExcel(data, i): # xlsxwriter库储存数据到excel
insertData = [data["1"], data["2"], data["3"], data["4"], data["5"], data["6"], data["7"], data["8"], data["9"], data["10"], data["11"], data["12"], data["13"], data["14"], data["15"], data["16"], data["17"], data["18"], data["19"]]
row = 'A' + str(i)
worksheet1.write_row(row, insertData, bold)
i += 1
return i
# 计算
def Calculation(width, high, Split_laer):
turbine_size = str(width)+" * "+str(high)+" * "+str(width) # 涡轮大小
turbine_casing = str(high*4+(width-2)*8+(width-2)**2) # 涡轮外壳
structural_glass = str((Split_laer-2)*((width-2)*4)) # 结构方块
turbine_casing_whole = str((high*4+(width-2)*8+(width-2)**2)+((Split_laer-2)*((width-2)*4))) # 涡轮外壳(全)
pressure_disperser = str((width-2)**2-1) # 分压元件
turbine_vent = str(((width-2)**2)+(high-Split_laer)*((width-2)*4)) # 涡轮排气口
turbine_rotor = str(Split_laer-2) # 涡轮转子
turbine_blade = str((Split_laer-2)*2) # 涡轮叶片
rotational_complex = 1 # 复杂旋钮装置
electromagnetic_coil = str(math.ceil(((Split_laer-2)*2)/4)) # 电磁线圈
saturating_condenser = str((width-2)**2*(high-Split_laer-1)-math.ceil(((Split_laer-2)*2)/4)) # 饱和冷凝器
tank_volume = str((Split_laer-2)*(width**2)) # 储罐容积(蒸汽层容积)
# 最大流量(mB/t)
if ((width-2)**2)+(high-Split_laer)*((width-2)*4)*16000 <= (width**2)*(Split_laer-2)*((width-2)**2-1)*640:
max_flow = ((width-2)**2)+(high-Split_laer)*((width-2)*4)*16000
else:
max_flow = (width**2)*(Split_laer-2)*((width-2)**2-1)*640
max_capacity = str((max_flow*((Split_laer-2)*2)*(25/7))*2.0/5.0/1000000.0) # 最大产能(MRF/t)
steam_buffer = str(((width-2)**2)*(Split_laer-2)*64000) # 蒸汽缓存量(mB)
energy_cache = str((width**2)*high*16000*2/5/1000000) # 最大能量缓存量(GRF)
max_return_water = str((((width-2)**2)+(high-Split_laer)*((width-2)*4))*16000) # 最大回水量(mB/t)
date_list = [turbine_size,Split_laer, turbine_casing, structural_glass, turbine_casing_whole,# 数据列表化
pressure_disperser, turbine_vent, turbine_rotor, turbine_blade,
rotational_complex,electromagnetic_coil, saturating_condenser, "", tank_volume,
max_flow, max_capacity, steam_buffer, energy_cache, max_return_water]
num_list = ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19'] # 19种数据
date_dict = dict(zip(num_list,date_list)) # 压缩为字典
return date_dict
# 删除文件
try:
if os.path.exists('数据.xlsx') != False:
os.remove('数据.xlsx')
except PermissionError:
print("另一个程序正在使用此文件,进程无法访问。: \'数据.xlsx\'")
workbook = xw.Workbook('数据.xlsx') # 创建工作簿
worksheet1 = workbook.add_worksheet("sheet1") # 创建子表
worksheet1.activate() # 激活表
bold = workbook.add_format({'border':2})
title = ['涡轮大小', '分压元件高度位置', '涡轮外壳', '结构方块', '涡轮外壳(全)', '分压元件', '涡轮排气口', '涡轮转子', '涡轮叶片', '复杂旋钮装置', '电磁线圈', '饱和冷凝器', '', '储罐容积', '最大流量(mB/t)', '最大产能(MRF/t)', '蒸汽缓存量(mB)', '能量缓存量(GRF)', '最大回水量(mB/t)'] # 设置表头
worksheet1.write_row('A1', title, bold) # 从A1单元格写入表头
input_ = input("选择自动写入全部数据填1,自己输入大小数据填2: ")
if input_ == "1":
# 自动写入所以可能
for width in range(5,18):
for high in range(5,19):
for Split_laer in range(3,high-1):
# 将文件写入Excel
testData = Calculation(width, high, Split_laer)
fileName = '数据.xlsx'
i = xw_toExcel(testData, i)
print("写入完成: "+str(i-2))
workbook.close() # 关闭表
if input_ == "2":
# 输入结构大小
width = input("涡轮的大小(宽):")
high = input("涡轮的大小(高):")
Split_laer = input("涡轮分压元件的高度位置(上部分的高度必须大于2层,下部分的高度必须大于0层):")
# 转换
width = int(math.floor(float(width)))
high = int(math.floor(float(high)))
Split_laer = int(math.floor(float(Split_laer)))
# 判断结构大小是否合法
if Split_laer <= high-2 and Split_laer >= 3:
pass
else:
print("分压元件的高度必须在3~"+str(high-2)+"的区间内")
if width < 5 or width > 17:
print("宽需要大于等于5或小于等于17")
if high < 5 or high > 18:
print("高需要大于等于5或小于等于18")
# 将文件写入Excel
if high >= 5 and high <= 18 and width >= 5 and width <= 17 and Split_laer <= high-2 and Split_laer >= 1:
testData = Calculation(width, high, Split_laer)
fileName = '数据.xlsx'
xw_toExcel(testData, i)
print("写入完成")
workbook.close() # 关闭表
if input_ != "1" and input_ != "2":
print("想啥呢,就俩选择")