如何使用Python的xlsxwriter去除Excel“数字以文本格式存储”提示
问题原因
你写入D1单元格时使用"{}%".format(chsl_spread)将数值转为了带百分号的字符串,Excel识别到单元格内容为数字形态但存储类型为文本,就会弹出“单元格中的数字为文本格式”的提示。
解决方案
方案1(推荐):使用单元格格式渲染百分比
直接写入数值类型的比例数据,通过xlsxwriter的格式配置自动显示百分号,既不会触发提示,也不影响后续对单元格数据的数值计算:
out_xls_path = os.path.join(dir_path, 'moprime', 'output.xlsx') workbook = xlsxwriter.Workbook(out_xls_path) io_sheet = workbook.add_worksheet("Input-Output ()") io_sheet.set_column(1, 3, 25) # 新增num_format参数配置百分比显示格式,不需要小数的话可以改为'0%' style = workbook.add_format({ 'bold': True, 'font_name': 'Calibri', 'align': 'center', 'border': 1, 'num_format': '0.00%' }) io_sheet.write('C1', "ch/sl spread", style) # 直接写入数值,若chsl_spread是15这种代表15%的整数,需要除以100转为0.15;如果本身就是比例小数直接传值即可 io_sheet.write('D1', chsl_spread / 100, style) io_sheet.write('C2', "ch/sl spread", style) io_sheet.write('D2', 23, style)
方案2:忽略文本存储数字的错误提示
如果你确实需要将百分比存为字符串格式,可以主动配置忽略对应单元格的错误提示:
# 在写入D1单元格后添加该行代码即可 io_sheet.ignore_errors({'number_stored_as_text': 'D1'})
内容的提问来源于stack exchange,提问作者S Andrew
相关产品推荐
相关产品推荐

