2017-09-24 69 views
2

我必须读取某个.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工作簿(不丢失图表)?

+1

PyWin32只能在Windows上运行。它使用Excel COM界面并需要安装MS Excel。所以图表不能丢失。不知道为什么xlrd + xlsxWriter不适合你。从未遇到过这样的任务。 –

+0

谢谢@VasilyRyabov。我主要研究了openpyxl的细节。对于xlsxwriter/xlrd,我做了一个粗略的概述..也许我错过了一些东西。我知道xlsxwriter无法读取文件,因此必须使用xlrd来读取现有文件。 xlrd可以读取工作簿并将其传递给xlswriter吗?因为这些是独立的库,所以我认为它们不相互兼容,不相互交流。 Xlrd可以用图表读取工作簿并将其传递给xlswriter写出来? –

+0

我也有关于xlwings。如果我必须走这条路线,python32有没有xlwings的优点?我知道使用Excel COM的pywin32/xlwings,这就是为什么我试图避免该路线。 –

回答

2

图表的保存是在openpyxl版本2.5中引入的一项功能(请参阅herehere)。所以你可以尝试安装和使用openpyxl的2.5开发版本。

+0

我尝试从我的Linux环境..这似乎工作,即使2.5.0a3。在.xlsx中使用图表会导致Excel2016识别.xlsx文件中的错误。当它更正它时,图表就消失了。我需要在Windows环境中运行才能完成这项工作吗? –

+0

哦,太糟糕了。我自己并没有尝试过2.5.0a3版本,但如果使用的操作系统完全不同,我会感到非常惊讶。这可能是图表保存功能还有一些问题仍然需要解决,因为它仍然是开发版本的一部分。 – Xukrao

相关问题