Python 可以将Excel选项卡读入代码,并用格式将同一选项卡写回
我有使用XlsxWriter创建名为Python 可以将Excel选项卡读入代码,并用格式将同一选项卡写回,python,excel,openpyxl,xlsxwriter,styleframe,Python,Excel,Openpyxl,Xlsxwriter,Styleframe,我有使用XlsxWriter创建名为file\u A的excel文件的代码。用户向我发送了一个名为file\u b的excel文件,它只有一个选项卡,名为tab\u b。他们希望选项卡b附加到文件A。这个选项卡b包含很多格式(我认为其中一些属于“丰富”格式),我不想硬编码到代码库中 有没有办法将选项卡b作为某种选项卡对象上载到代码库中?然后,我可以将此选项卡附加到文件a,所有格式和硬编码都将封装在选项卡对象中 我们已经在我们的代码库中使用了XlsxWriter和openpyxl,但我不知道它们是
file\u A
的excel文件的代码。用户向我发送了一个名为file\u b
的excel文件,它只有一个选项卡,名为tab\u b
。他们希望选项卡b
附加到文件A
。这个选项卡b
包含很多格式(我认为其中一些属于“丰富”格式),我不想硬编码到代码库中
有没有办法将选项卡b
作为某种选项卡对象上载到代码库中?然后,我可以将此选项卡附加到文件a
,所有格式和硬编码都将封装在选项卡对象中
我们已经在我们的代码库中使用了XlsxWriter和openpyxl,但我不知道它们是否真的是为了做这类事情而设计的。如果需要,我对其他模块持开放态度,但它必须与Python兼容
我们当前如何创建文件的示例代码如下所示:
writer = pd.ExcelWriter(output_file_path, engine='xlsxwriter')
someDataFrame.to_excel(writer, sheet_name='PreExisting_Tab')
writer.save()
理想情况下,我希望找到的是,下面的伪代码是否有真正的代码:
writer = pd.ExcelWriter(output_file_path, engine='xlsxwriter')
someDataFrame.to_excel(writer, sheet_name='PreExisting_Tab')
tab_b = readTabWithFormattingIntoPython("filePathToFile_B")
tab_b.to_Excel(writer,sheet_name='tab_b')
writer.save()
下面的屏幕截图显示了文件中的选项卡。\b。
更新感谢@DeepSpace让我注意到StyleFrame。它看起来很有希望,但我最初的概念验证尝试失败了。以下是我尝试的内容(它似乎与您示例中的代码非常相似,不确定为什么失败):
上述代码的结果是,创建excel文件时使用的一个工作表没有它应该读取的文件中的数据或格式。在单元格A1中,它表示“此工作表包含用于此工作簿的=FDS代码的FactSet XML数据。修改工作表的内容可能会损坏wrokbook的=FDS功能。”
不确定这是否是它不起作用的原因,但在创建编写器时,我必须指定“engine='openpyxl'。如果我没有指定,它尝试使用XlsxWriter,但由于AttributeError而失败:“工作簿”对象没有属性“get_sheet_by_name”
第二次更新StyleFrame最终成功。请参见下面@DeepSpace答案中的评论。(作为免责声明,我是的作者之一)可以做到这一点
from StyleFrame import StyleFrame
writer = pd.ExcelWriter(output_file_path)
someDataFrame.to_excel(writer, sheet_name='PreExisting_Tab')
tab_b = StyleFrame.read_excel("filePathToFile_B", read_style=True)
tab_b.to_Excel(writer, sheet_name='tab_b')
writer.save()
(作为免责声明,我是的作者之一)可以做到这一点
from StyleFrame import StyleFrame
writer = pd.ExcelWriter(output_file_path)
someDataFrame.to_excel(writer, sheet_name='PreExisting_Tab')
tab_b = StyleFrame.read_excel("filePathToFile_B", read_style=True)
tab_b.to_Excel(writer, sheet_name='tab_b')
writer.save()
老实说。如果你想要这种控件,你应该直接使用openpyxl。它有一个用于将数据帧转换为行的实用程序,可以让你直接使用现有的Excel文件。老实说,如果你想要这种控件,你应该直接使用openpyxl。它有一个用于将数据帧转换为行的实用程序,可以让你直接使用您可以直接使用现有的Excel文件。很抱歉,这最终对我不起作用。作为概念证明,我的第一次尝试只是将一个Excel工作表作为样式框读入。然后立即将其转换回Excel工作表并保存编写器。这导致Excel工作表中没有我的格式或数据。输出Excelsheet刚才在单元格A1中说,“此工作表包含用于此工作簿的=FDS代码的FactSet XML数据。修改工作表的内容可能会损坏wrokbook的=FDS功能。“您知道如何解决这个问题吗?我在问题的底部添加了代码,试图复制您的answer@Curiosity这似乎是某种宏观层面的“保护”“在XLSX文件本身上。如果你只使用pandas来读取和保存文件,它是否有效?这就是问题所在!谢谢@DeepSpace。很抱歉,这对我不起作用。作为概念证明,我的第一次尝试只是将一张excel表格作为样式框阅读。然后立即将其转换回excel表格并保存编写器。这导致excel工作表中没有我的格式或数据。输出excel工作表刚刚在单元格A1中说,“此工作表包含用于此工作簿的=FDS代码的FactSet XML数据。修改工作表的内容可能会损坏wrokbook的=FDS功能。”你知道如何解决这个问题吗?我试图复制你的answer@Curiosity这似乎是对XLSX文件本身的某种宏观级别的“保护”。如果你只使用pandas来读取和保存文件,它是否有效?这就是问题所在!谢谢@DeepSpace。