注册 登录
编程论坛 Python论坛

萌新求教,Typeerror: descriptor 'decode' requires a 'bytes' object but received a 'No

irontooth 发布于 2019-08-20 23:16, 6860 次点击
程序如下,想将一个excel里的部分列导入另一个excel中,运行到保存时,总提示Typeerror。请各位大神指点。excel和程序见附件。谢谢!
只有本站会员才能查看附件,请 登录


# coding=gbk
import xlrd
import xlwt
import time
import xlutils
from xlutils.copy import copy

#打开BM单excel wb_BM
wb_BM = xlrd.open_workbook(r'BM单.xlsx')

#打开BM单sheet st_BM
st_BM = wb_BM.sheet_by_name('数据')

#读入BM数量bmsl
bmsl = st_BM.nrows
print('BM单数量')
print(bmsl)

#读入A列BM单号BM
BM = st_BM.col_values(0)
#读入C列审批状态 SPZT
SPZT = st_BM.col_values(2)
#读入O列需求人 XQR
XQR = st_BM.col_values(14)
#读入S列标题 BT
BT = st_BM.col_values(18)
#-----------------------------------------------------------------------------

#打开备件跟踪excel wb_BJGZ
filename = r'1.xls'
wb_BJGZ = xlrd.open_workbook(filename,formatting_info=True)
#wb_BJGZ = openpyxl.load_workbook(filename)

#打开备件跟踪sheet st_BJGZ
st_BJGZ = wb_BJGZ.sheet_by_name('备件')
#st_BJGZ = wb_BJGZ.get_sheet_names('备件')

wb_BJGZ_Temp = copy(wb_BJGZ)
st_BJGZ_Temp = wb_BJGZ_Temp.get_sheet('备件')


#读入A列序号XH
XH = st_BJGZ.col_values(0)
#读入B列提单备件信息 BJXX  即备件品牌
BJXX = st_BJGZ.col_values(1)
#读入C列提单人 TDR
TDR = st_BJGZ.col_values(2)
#读入G列形成EBM单时间 EBMSJ
EBMSJ = st_BJGZ.col_values(6)
#读入I列形成BM单号 BMDH
BMDH = st_BJGZ.col_values(8)

#读入BM单数量bjbm
bjbm = len(XH)
print('备件BM单数')
print(bjbm)

#-----------------------------------------------------------------------------

#开始比较BM单号
print(BMDH[bjbm-1])

i = 0
k = bjbm
print(k)

while i < bmsl:
    l = 0
    while l < bjbm:
        if BMDH[l] == BM[i]:
            i = i+1
            break
        elif l == bjbm-1:
            #把信息写入BJGZ表#
            print(i)
            st_BJGZ_Temp.write(k,0,k-1)#序号
            st_BJGZ_Temp.write(k,1,BT[i]) #提单备件信息
            st_BJGZ_Temp.write(k,2,XQR[i]) #提单人
            #st_BJGZ_Temp.write(k,6,time.strftime('%Y.%m.%d',time.localtime(time.time()))) #形成EBM时间
            st_BJGZ_Temp.write(k,8,BM[i]) #BM单号
            k = k+1
            l = l+1
        else:
            l = l+1
    i = i+1   
        


#保存检查结果
wb_BJGZ_Temp.save(filename)   

while(True):
    a = input('输入q退出\n')
    if( a == 'q' or a == 'Q'):
        break


5 回复
#2
wei_ai_lu2019-08-23 10:57
好像是你的“1.xls”文件有不能处理的单元格式,要不全选,然后选常规格式,把你那个None格式去了
#3
moses_dream2020-02-27 23:47
你现在找到这个问题的解决方案没有,我也遇到同样的问题,网上找不到解决方案
#4
moses_dream2020-02-27 23:50
找到解决方案,可以发我邮箱,2605618480@
#5
moses_dream2020-03-03 11:14
回复 3楼 moses_dream
http://
解决方案
#6
moses_dream2020-03-03 11:16
回复 4楼 moses_dream
只有本站会员才能查看附件,请 登录
1