建立了两个表但是数据全都出现在第一个表中
def pushButton_create(self):
send_data1 = {} # 创建字典
send_data2 = {}
send_data3 = {}
send_data4 = {} # 创建字典
send_data1['data'] = self.ui.textEdit_name.toPlainText()+ "\r\n"# 数据等于lineEdit_name的值 简单文本用toPlainText()
send_data2['data'] = self.ui.textEdit_come.toPlainText()+ "\r\n" # 数据等于lineEdit_name的值 简单文本用toPlainText()
send_data3['data'] = self.ui.textEdit_bl.toPlainText() + "\r\n" # 数据等于lineEdit_name的值 简单文本用toPlainText()
send_data4['data'] = self.ui.textEdit_lp.toPlainText() + "\r\n" # 数据等于lineEdit_name的值 简单文本用toPlainText()
data = send_data1['data']+send_data2['data']+send_data3['data']+send_data4['data']
print(data)
#文件在桌面文件里
path = os.path.join(os.path.expanduser('~'), "Desktop") # 文件在桌面
xlname='批次管理.xlsx'
f2 = path + "\\" + "批次管理"
xlname=f2+"\\"+xlname
if not os.path.exists(f2):
os.makedirs(f2)
self.opt = open(xlname, 'w') # 创建文件写入模式,w原有的内容被覆盖 不想被覆盖 w变成a a为追加模式
self.Serial_QTread_Function.opt = self.opt
#sheet1
workbook = openpyxl.Workbook()
titles = [u'物料信息', u'来料数',u'次品', u'良品']
worksheet=workbook.active
worksheet.cell(1, 1).value=titles[0]
worksheet.cell(1, 2).value=titles[1]
worksheet.cell(1, 3).value=titles[2]
worksheet.cell(1, 4).value=titles[3]
workbook.save(xlname)
workbook.close()
workbook = openpyxl.load_workbook(xlname)
worksheet=workbook.active
rc=2
tmp_c=badNum
tmp_l=goodNum
tmp_c_c=1
tmp_l_c=1
for i in range(allNum):
tmp_flag=0
now = datetime.now()#定义时钟 在命名时使用
date_time = now.strftime("%Y%m%d")
if tmp_c_c<=tmp_c:
worksheet.cell(rc, 3).value="MSCP"+date_time+ str(tmp_c_c).zfill(4)
tmp_flag=1
tmp_c_c+=1
if tmp_l_c<=tmp_l:
worksheet.cell(rc, 4).value="MSLP"+date_time+ str(tmp_l_c).zfill(4)
tmp_flag=1
tmp_l_c+=1
if tmp_flag==0:
break
worksheet.cell(rc, 1).value=send_data1['data']
worksheet.cell(rc, 2).value=allNum
rc+=1
#第二个表
worksheet2 = workbook.create_sheet('库存信息')
worksheet2.append(["日期", "物料信息",'来料数','良品','次品'])
worksheet2 = workbook.active
rc = worksheet2.max_row
rc += 1
tmp_cp = int(send_data3['data'])
tmp_lp = int(send_data4['data'])
tmp_cp_cp = 1
tmp_lp_cp = 1
for i in range(int(send_data2['data'])):
worksheet2.cell(rc, 1).value = send_data1['data']
worksheet2.cell(rc, 2).value = send_data2['data']
if tmp_cp_cp <= tmp_cp:
worksheet2.cell(rc, 3).value = "C" + str(tmp_cp_cp).zfill(2)
tmp_cp_cp += 1
if tmp_lp_cp <= tmp_lp:
worksheet2.cell(rc, 4).value = "L" + str(tmp_lp_cp).zfill(2)
tmp_lp_cp += 1
rc += 1
workbook.save(xlname)
workbook.close()
worksheet2 = workbook.active
rc = worksheet2.max_row
这个参照第一张表来做呢,这里读取的rc 应该就是不对了,打印看看
问题可能出在这里
worksheet2 = workbook.create_sheet('库存信息')
worksheet2.append(["日期", "物料信息",'来料数','良品','次品'])
worksheet2 = workbook.active
这没有获取到第二张表,切换表格有以下两种方式,你试试
worksheet2 = workbook.get_sheet_by_name(u"库存信息")
worksheet2 = workbook['库存信息']
我认为问题出在代码的第57~60行:
#第二个表
worksheet2 = workbook.create_sheet('库存信息')
worksheet2.append(["日期", "物料信息",'来料数','良品','次品'])
worksheet2 = workbook.active
Worksheet2两次赋值后, 实际指向了workbook的默认sheet.
将第60行注释掉试试.
问题是第60行worksheet2 = workbook.active,将这行代码去掉即可。
workbook.active 官方解释:
This is set to 0 by default. Unless you modify its value, you will always get the first worksheet by using this method.
该工作簿的默认索引是从0开始。除非索引值被修改,否则使用这个方法将总是获取第一个工作表。
打印看看70行 if tmp_cp_cp <= tmp_cp:
两个参数的值,可能是没运行