Huangjiamai 2022-04-26 14:23 采纳率: 33.3%
浏览 70
已结题

python excle 建立了两个表但是数据只写入到第一个表

问题遇到的现象和发生背景

建立了两个表但是数据全都出现在第一个表中

img


LP01那些想让他在第二个库存信息的表中出现

问题相关代码,请勿粘贴截图
    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()

运行结果及报错内容

img


命名和写入表头都没问题 定义成 worksheet2

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

5条回答 默认 最新

  • 黑白码农 2022-04-26 14:51
    关注
    
            worksheet2 = workbook.active
            rc = worksheet2.max_row
    

    这个参照第一张表来做呢,这里读取的rc 应该就是不对了,打印看看

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月26日
  • 赞助了问题酬金1元 4月26日
  • 创建了问题 4月26日