python写入excel出错,如何解决?

想问问各位,用的是python,这个问题是什么意思,怎么解决:

TypeError: descriptor 'decode' for 'bytes' objects doesn't apply to a 'NoneType' object

我是想把从excel(把这个excel叫做one)里导出的数据再写入到另外一个excel(把这个excel叫做two)里面,one里面的数据格式是“自定义”里面的“0”,但是再写入的时候就出现这个报错了,求解答

import xlrd#(pip install xlrd==1.2.0)
import os
from xlutils.copy import copy
from xlwt import Style

#writeExcel函数,row第几行,col第几列,str写入内容,styl格式(默认)
def writeExcel(row,col,str,styl=Style.default_style):
    rb = xlrd.open_workbook(r'F:\来自分享\dbf\two.xls',formatting_info=True)
    wb = copy(rb)
    ws = wb.get_sheet(1)
    ws.write(row,col,str,styl)
    wb.save(r'F:\来自分享\dbf\two.xls')

#find函数,path路径名称,file文件名称,id身份证号
def find(path,file,id):
    for rt, dirs, files in os.walk(path):
        for f in files:
            if f == file:
                aim_path = rt + os.path.sep + f
                workbook = xlrd.open_workbook(aim_path)
                sheet_names = workbook.sheet_names()
                all_value = workbook.sheet_by_index(0)
                length = all_value.nrows
                x = 2
                y = 1
                z = 2
                styl=Style.default_style
                for i in range(length):
                        row = all_value.row_values(i)
                        if id == row[8]:
                            print(row[7])
                            print(int(row[14]))
                            ZQZHHM = row[7].encode('utf8')
                            CYSL = row[14]
                            writeExcel(x,y,ZQZHHM,styl)
                            writeExcel(x,z,CYSL,styl)
                            x = x + 1

path_ = input('请输入想要搜索的路径:')#这里会输入一个one文件的目录
file_ = input('请输入想要搜索的文件名称:')#这里输入“one.xlsx”
while True:
    id = input('请输入身份证id:')
    find(path_,file_,id)

TypeError: descriptor 'decode' for 'bytes' objects doesn't apply to a 'NoneType' object

类型错误,你无法把一个None类型的值使用 decode 解码

发下代码看看吧

有帮助的话,请点采纳该答案~

该回答引用GPTᴼᴾᴱᴺᴬᴵ
这个错误通常发生在试图对NoneType对象调用decode()方法时,因为NoneType对象是不可调用decode()方法的。这个错误可能与你从Excel文件中读取的数据有关。

一种可能的解决方法是,在将数据写入Excel文件之前,先检查数据是否为空,以避免将NoneType对象传递给Excel写入函数。可以使用Python中的if语句或try-except语句来实现这一点。

以下是一个简单的示例,演示如何使用try-except语句来避免将NoneType对象传递给Excel写入函数:

import openpyxl

# 读取Excel文件
wb = openpyxl.load_workbook('one.xlsx')
ws = wb.active

# 创建一个新的Excel文件
wb2 = openpyxl.Workbook()
ws2 = wb2.active

# 遍历one中的行,并将数据写入two中
for row in ws.iter_rows():
    try:
        # 检查单元格是否为空
        if row[0].value and row[1].value and row[2].value:
            # 将数据写入two中
            ws2.append([row[0].value, row[1].value, row[2].value])
    except AttributeError:
        # 如果单元格为空,则跳过
        pass

# 保存two文件
wb2.save('two.xlsx')


这个示例首先打开名为“one.xlsx”的Excel文件,并将数据读取到名为“ws”的工作表中。然后,它创建了一个名为“two.xlsx”的新Excel文件,并将数据写入到名为“ws2”的工作表中。在遍历one工作表的每一行时,它使用try-except语句来检查每个单元格的值是否为空。如果单元格不为空,则将数据写入two工作表中的对应单元格。如果单元格为空,则使用pass语句跳过该单元格。最后,它保存two.xlsx文件。