该错误通常是由于Excel中某单元格的值包含非法字符(如控制字符)而导致的。可以在读取Excel时使用openpyxl中的clean函数来清理这些非法字符。
例如,在使用pandas读取Excel文件时,可以使用以下代码来清理非法字符:
import pandas as pd
import openpyxl
def clean_value(value):
return openpyxl.utils.clean(value)
df = pd.read_excel('file.xlsx', converters={'column_name': clean_value})
其中,clean_value函数将传入的值清理后返回。在read_excel函数中,使用converters参数指定需要清理的列,并将clean_value函数作为参数传入即可。
类似地,在使用xlrd读取Excel文件时,可以使用以下代码来清理非法字符:
import xlrd
import openpyxl
def clean_value(value):
return openpyxl.utils.clean(value)
book = xlrd.open_workbook('file.xlsx', formatting_info=True)
for sheet in book.sheets():
for row in range(sheet.nrows):
values = sheet.row_values(row)
cleaned_values = [clean_value(value) for value in values]
print(cleaned_values)
其中,使用xlrd打开Excel文件后,遍历每个sheet以及每行数据,将每个单元格的值清理后打印出来。
如此一来,即可避免“openpyxl.utils.exceptions.illegalcharactererror”错误。