- 公司项目导出数据时,使用了xlsxWriter来把数据写入到excel文件中
- 普通从关系数据库导入的数据,导出完全没有问题
- 突然有天发现报错了,错误信息:typeError: NAN/INF not supported in write_number() without 'nan_inf_to_errors' Workbook() option
- 分析了错误的背景,导入的时数据,原始数据时excel,
- 定位原因,excel导入时用的是numpy,保留了excel特有的数据类型nan
- 导出时,无法写入nan
- 解决办法一:
- mongodb取出值的时候,判断一下str(value) in ["NaN","nan","NAN"],然后替换为None
- 解决方法二:
- 设置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})
- 设置xlsxwriter.Workbook()的配置