Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 可以将Excel选项卡读入代码,并用格式将同一选项卡写回_Python_Excel_Openpyxl_Xlsxwriter_Styleframe - Fatal编程技术网

Python 可以将Excel选项卡读入代码,并用格式将同一选项卡写回

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,但我不知道它们是

我有使用XlsxWriter创建名为
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。