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

  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})
原文地址:https://www.cnblogs.com/qumogu/p/14506698.html