使用 Styleframe 从 Excel 中提取单个单元格的样式

Using Styleframe to pull styles of individual cells from Excel

我正在尝试编写一个将两个 excel 文件合并在一起的脚本。一个已经过手工处理,并对其进行了一系列自定义格式设置,另一个是自动生成的文件。在 pandas 中进行合并很简单,但事实证明保留格式很麻烦。我找到了 styleframe 库,它似乎应该简化我正在尝试做的事情,因为除了原始数据之外,它还可以导入样式信息。但是,我在实际执行代码时遇到了问题。

我的问题是:如何从 excel 中的每个单元格中提取样式信息,然后将其应用到我的合并数据框中?请注意,数据在列或行中的格式不一致,因此我认为我无法以这种方式应用样式。这是我的代码的相关部分:

#iterate thorough all cells of merged dataframe
for rownum, row in output_df.iterrows():
    for  column, value in row.iteritems(): 
        filename = row['File Name']

        cur_style = orig_excel.loc[orig_excel['File Name'] == filename, column][0].style #pulls the style of relevant cell in the original excel document
        target_style = output_df.loc[output_df['File Name'] == filename, column][0].style #style of the cell in the merged dataframe
        target_style = cur_style #set style in current output_df cell to match original excel file style

此代码运行(缓慢)但它似乎并未实际将任何样式应用到输出样式框架

查看文档后,我并没有真正看到在单个样式框架容器级别应用样式的方法——一切都旨在将其作为行或列来应用。看来您还需要使用样式器对象来设置样式。

想通了。我重新调整了我的数据框,这样我就可以只使用 .at 而不是 .loc 查找。这个,加上 apply_style_by_indexes 方法让我到达了我需要去的地方:

for index, row in orig_excel.iterrows():
    for  column, value in row.iteritems(): 
        index_num = output_df.index.get_loc(index)

        #Pull style to copy to new df
        cur_style = orig_excel.at[index, column].style 
      
        #Apply original style to new df
        output_df.apply_style_by_indexes(output_df.index[index_num], 
                                         cur_style, 
                                         cols_to_style = column)