Python库用图表打开现有的.xlsx工作簿
问题描述:
我必须读取某个.xlsx文件(file1.xlsx),从另一个.csv文件(file2.csv)中提取数据并将处理后的数据写入原始文件( file1.xlsx)以及一些图表。该文件具有现有的图表,我查看了openpyxl,xlswriter,xlsread和其他python库。Python库用图表打开现有的.xlsx工作簿
看来openpyxl是唯一一个允许你用同一个库读写文件的库。其他人喜欢xlswriter只写,或xlsread只读。
但是,即使是openpyxl也是有限的,因为如果我读取已经有图表的文件,图表就会丢失。
我能想到的仅仅是从python这样做的唯一方法是使用openpyxl和pywin32的组合。 1.从file2.csv中提取数据,处理数据并打印输出到另一个.xlsx文件(或保存在内存中) 2.使用pywin32将数据从内存或file3.xlsx中复制到file1.xlsx中。
之前,我深入pywin32,我想检查这是否是一个可行的策略。我在Linux环境下工作,所以在进行数据处理时宁愿留在这个环境中,但我不知道是否有另一种出路。
有没有人读过excel工作簿,并用openpyxl或其他库将数据写入同一个excel工作簿(不丢失图表)?
答
熊猫的也许能够读取和写入Excel。它使用xlrd来读取excel文件和xlswriter来写出它。所以它似乎可以将Excel文件usign xlrd加载到内存中,并将其传递给xlsxwriter以保存文件。
https://pandas.pydata.org/pandas-docs/stable/io.html#io-excel-writer
PyWin32只能在Windows上运行。它使用Excel COM界面并需要安装MS Excel。所以图表不能丢失。不知道为什么xlrd + xlsxWriter不适合你。从未遇到过这样的任务。 –
谢谢@VasilyRyabov。我主要研究了openpyxl的细节。对于xlsxwriter/xlrd,我做了一个粗略的概述..也许我错过了一些东西。我知道xlsxwriter无法读取文件,因此必须使用xlrd来读取现有文件。 xlrd可以读取工作簿并将其传递给xlswriter吗?因为这些是独立的库,所以我认为它们不相互兼容,不相互交流。 Xlrd可以用图表读取工作簿并将其传递给xlswriter写出来? –
我也有关于xlwings。如果我必须走这条路线,python32有没有xlwings的优点?我知道使用Excel COM的pywin32/xlwings,这就是为什么我试图避免该路线。 –