使用xlsxwriter如何将所有空白单元格填充为空格以避免文本溢出?
实现方案
方案1:直接预处理DataFrame(操作最简)
在DataFrame创建完成后、导出到Excel前,批量替换所有空值为单个空格即可,仅需新增1行代码,执行效率最高:
df = pd.DataFrame(all_mp_dict) # 新增以下行,替换所有NaN/空值为单个空格 df = df.fillna(' ')
方案2:使用你提到的{'type':'blank'}属性处理(不修改原始DataFrame)
如果需要保留原始DataFrame的空值结构,仅在导出的Excel文件中填充空白单元格,可通过xlsxwriter的单元格类型判断实现,在writer.close()前添加以下代码即可:
max_row, max_col = df.shape # 遍历所有数据单元格,识别空白类型单元格并填入空格 for row in range(1, max_row + 1): for col in range(1, max_col + 1): cell = worksheet._cells.get((row, col)) if cell and cell.get('type') == 'blank': worksheet.write(row, col, ' ')
修改后完整参考代码
def export_to_xlsx(date): global df ## CREATE PD DATAFRAME all_mp_dict = scraper(date) df = pd.DataFrame(all_mp_dict) # 用方案1就保留这行,用方案2就注释掉这行 df = df.fillna(' ') ## WORKSHEET FORMATTING workbook_loc = './mp_excel/mp_data_'+date+'.xlsx' writer = pd.ExcelWriter(workbook_loc, engine='xlsxwriter') df.to_excel(writer, sheet_name=date+'_raw') workbook = writer.book worksheet = writer.sheets[date+'_raw'] header_format = workbook.add_format({ 'bold': True, 'text_wrap': True, 'valign': 'top', 'fg_color': '#FFFF00', 'border': 1}) for col_num, value in enumerate(df.columns.values): worksheet.write(0, col_num+1, value, header_format) ## 用方案2就取消注释下面的代码块,用方案1就保留注释 # max_row, max_col = df.shape # for row in range(1, max_row + 1): # for col in range(1, max_col + 1): # cell = worksheet._cells.get((row, col)) # if cell and cell.get('type') == 'blank': # worksheet.write(row, col, ' ') ## TO_EXCEL writer.close()
内容的提问来源于stack exchange,提问作者mess1n
相关产品推荐
相关产品推荐

