2017-04-03 70 views
0

我創建了一個非常簡單實用的功能,只是把一個數據幀到Excel工作表,使用openpyxl較新的dataframe_to_rows選項:Openpyxl dataframe_to_rows產生不可讀的內容錯誤

insertRows = dataframe_to_rows(df) 
worksheet = workbook.create_sheet(title=sheetName) 

for r_idx, row in enumerate(insertRows, 1): 
    for c_idx, cell_value in enumerate(row, 1): 
     worksheet.cell(row=r_idx, column=c_idx, value=value) 

當我打開的工作簿,我收到Excel的無法讀取的內容錯誤通常與格式有關。經過一些Google搜索後,我發現答案不會發布在任何地方。因此發佈我的修補程序下面

回答

0

該問題最終與數據框中的numpy NAN值的格式化有關,該單元類無法正確轉換。

一個簡單的解決方法是改變插入代碼到類似以下內容:

try: 
    if numpy.isnan(cell_value): 
     cell_value = "NAN" 
    elif numpy.isinf(cell_value): 
     cell_value = "INF" 
    else: 
     cell_value = float(cell_value) 
except: 
    pass 

worksheet.cell(row=r_idx, column=c_idx, value=cell_value)