Openpyxl报错ValueError:无法将部分字符串写入Excel
问题:写入Excel时出现
ValueError: Cannot convert 'THE-DATA' to Excel的原因 我创建了包含数字和字符串的列表signal,用以下for循环写入Excel工作表:
import string # 假设ws是已创建的工作表对象,a是要写入的单行数据列表 columns = list(string.ascii_uppercase)[:26] row = 3 for j in range(len(columns)): ws[columns[j] + str(row)] = a[j] row += 1
原本代码运行正常,但现在处理部分文件时始终报错:
ValueError: Cannot convert 'THE-DATA' to Excel
即使将字符串中的“-”改为“_”仍会报错,但测试单个列表的代码能正常运行:
import string # 假设wb、ws是已初始化的工作簿和工作表对象 columns = list(string.ascii_uppercase)[:6] a_test = [1, 3, "sa", "ABC DEF THE-DATA",7,3] row = 3 # starting row of the Excel sheet for j in range(len(columns)): ws[columns[j] + str(row)] = a_test[j] wb.save(fr"Test121314.xlsx")
可能的原因
- 实际数据包含隐形控制字符:测试用的是干净的字符串,但你处理的文件里的"THE-DATA"可能附带了Excel不支持的不可见ASCII控制字符(比如
\x00空字符、\x0b垂直制表符、\x1a替换符这类)。这些字符肉眼看不到,但会触发转换错误,哪怕修改可见的"-"也没用。 - 元素类型不是纯字符串:如果
a列表中对应的元素不是Python的str类型,而是bytes字节对象,哪怕打印出来和字符串一样,Excel库也无法直接转换,会抛出类似错误。 - 字符串包含超出Excel支持的Unicode字符:某些罕见的Unicode字符(比如部分特殊 emoji、生僻的象形文字)可能不在Excel的字符支持范围内,也会导致转换失败。
内容的提问来源于stack exchange,提问作者Sebastian Tramposch
相关产品推荐
相关产品推荐

