菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
208
0

报错typeError: NAN/INF not supported in write_number() without 'nan_inf_to_errors' Workbook() 的解决办法

原创
05/13 14:22
阅读数 17204
  1. 公司项目导出数据时,使用了xlsxWriter来把数据写入到excel文件中
  2. 普通从关系数据库导入的数据,导出完全没有问题
  3. 突然有天发现报错了,错误信息:typeError: NAN/INF not supported in write_number() without 'nan_inf_to_errors' Workbook() option
  4. 分析了错误的背景,导入的时数据,原始数据时excel,
    • 定位原因,excel导入时用的是numpy,保留了excel特有的数据类型nan
    • 导出时,无法写入nan
  5. 解决办法一:
    • mongodb取出值的时候,判断一下str(value) in ["NaN","nan","NAN"],然后替换为None
  6. 解决方法二:
    • 设置xlsxwriter.Workbook()的配置
      • write()和write_number()方法,将nan,inf和-inf认为是Excel错误。
      • Excel不处理NAN / INF的号码,因为它们映射到产生错误码公式解决方法#NUM!和#DIV/0!。默认是False。
      • 这个配置改成True就可以了
      • workbook = xlsxwriter.Workbook(filename, {'nan_inf_to_errors': True})

发表评论

0/200
208 点赞
0 评论
收藏
为你推荐 换一批