许多电子表格具有用于读写 Excel 文件的 Python 工具无法忠实再现的公式和格式。这意味着我想以编程方式创建的任何文件必须是我基本上从头开始创建的文件,然后其他 Excel 文件(具有上述复杂性)必须引用该文件(这会产生各种其他依赖性问题)。
我对 Excel 文件“选项卡”的理解是它们实际上只是 XML 文件的集合。好吧,是否可以使用 pandas(或底层读/写引擎之一,如 xlsxwriter 或 openpyxl 来修改其中一个选项卡,而其他选项卡(其中有更多邪恶的东西)完好无损?
编辑:我将尝试用一个例子进一步阐明问题。
- Excel Sheet test.xlsx 有四个选项卡(又名工作表):Sheet1、Sheet2、Sheet3、Sheet4
- 我使用 pandas.read_excel() 将 Sheet3 读入 DataFrame(我们称之为 df)
- Sheet1 和 Sheet2 包含 openpyxl 和 xlrd 都无法成功解析的公式、图形和各种格式,Sheet4 包含其他数据。我根本不想碰那些标签。
- Sheet2 实际上有一些对 Sheet3 上单元格的引用
- 我对 df 进行了一些编辑,现在想将其写回 sheet3,保持其他工作表不变(以及工作簿中其他工作表对它的引用完好无损)
我可以这样做吗?如果可以,怎么做?
原文由 HaPsantran 发布,翻译遵循 CC BY-SA 4.0 许可协议
关于 excel 和 python(特别是 pandas)之间的交互,我有一个类似的问题,我被提到了这个问题。
感谢 stackoverflow 社区的一些指点,我找到了一个名为 xlwings 的包,它似乎涵盖了 HaPsantran 所需的许多功能。
要使用 OP 的示例:
使用现有的 excel 文件,您可以通过在 excel 中命名要导入到 pandas 的数据块 (Sheet3) 中放置一个锚点,然后执行以下操作:
wb = Workbook(Existing_file)
df = Range(Anchor).table.value
测试了这个实现没有调整 excel 文件中的现有公式
让我知道这是否能解决您的问题,以及我是否可以提供任何帮助。
感谢 xlwings 的开发者,他们让这一切成为可能。
以下是在@jamzsabb 提出进一步问题后对我之前的回答进行的更新,以反映在 xlwings 更新到 >= 0.9.0 后更改的 API。