- 公司項目導出數據時,使用了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()的配置