首页 > 解决方案 > 为什么 Pandas 的函数 to_excel 将公式字符串小写?

问题描述

感谢你们对我的帮助。

我正在尝试从pandas.DataFrameusing function编写一个 excel .to_excel()

没关系,但问题是我在数据框中的公式发生了一些事情。这是我的代码:

for indx in range(len(currency)):
    if currency[indx] in list_currencies:
        
        row = str(list_currencies.index(currency[indx]) + 2)
        
        c_2019 = '=%s*$Currency.%s%s'%(str(gt_2019_mzero[indx]), index_excel['2019'], row)
        c_2020 = '=%s*$Currency.%s%s'%(str(gt_2020_mzero[indx]), index_excel['2020'], row)
        c_2021 = '=%s*$Currency.%s%s'%(str(gt_2021_mzero[indx]), index_excel['2021'], row)
        c_2022 = '=%s*$Currency.%s%s'%(str(gt_2022_mzero[indx]), index_excel['2022'], row)
        c_2023 = '=%s*$Currency.%s%s'%(str(gt_2023_mzero[indx]), index_excel['2023'], row)

        gt_2019_toconvert.append(c_2019)
        gt_2020_toconvert.append(c_2020)
        gt_2021_toconvert.append(c_2021)
        gt_2022_toconvert.append(c_2022)
        gt_2023_toconvert.append(c_2023)
...
    dataframe_impacts.insert(32, 'inde_2019 >= 0 €', gt_2019_toconvert)
    dataframe_impacts.insert(33, 'inde_2020 >= 0 €', gt_2020_toconvert)
    dataframe_impacts.insert(34, 'inde_2021 >= 0 €', gt_2021_toconvert)
    dataframe_impacts.insert(35, 'inde_2022 >= 0 €', gt_2022_toconvert)
    dataframe_impacts.insert(36, 'inde_2023 >= 0 €', gt_2023_toconvert)

然后,在视图中:

            # Create a Pandas Excel writer using XlsxWriter as the engine.
            options = {}
            options['strings_to_formulas'] = True
            writer = pd.ExcelWriter(excel_path, engine='openpyxl', options=options)
            
            # Write on excel:
            impacts.to_excel(writer, sheet_name='Impacts', index=False)
            currencies_table.to_excel(writer, sheet_name='Currency', index=True)

所以,例如c_2019应该是 --> c_2019 = "=500*$Currency.C3"(ie value*%SHEET_NAME.CELL_COORDINATES)

但是我实际上在单元格中的 excel 文件中得到的是"=500*&currency.c3",所有小写字母使公式根本不起作用。

谁能帮我弄清楚?

我正在使用:Python 3.7.8;熊猫==0.25.1

非常感谢 :)

标签: pythondjangoexcelpandas

解决方案


推荐阅读