比较使用Python的2个Excel文件

我有一个以下领域的Excel文件

Software_name,版本和计数。

该文件是安装在使用LANdesk生成的组织networking中的所有软件的清单。

我有另一个Excel文件,这是手动生成这些软件的购买清单。

我需要比较这些表,并创build一个报告,说明组织是否合规。

因此,我如何比较这两个文件。

有像Microsoft Office这样的实例被称为“office”,“server”被拼写为“svr”

如何去做呢?

SeyZ提到的第一步是确定如何读取这些Excel文件。 我没有他所指的图书馆的经验。 而是使用COM编程来读取和写入Excel文件,这当然要求您安装Excel。 此function来自PyWin32,如果您使用ActiveState Python安装程序 ,则默认安装 ;如果您从Python.org获得Python,则可以单独安装 。

下一步就是将事物转换成通用的格式来比较,或者从另一个文件中search元素。 我首先想到的是使用像SQLite这样快速简单的方式将LANdesk软件清单的内容加载到数据库表中。

然后,对于手动采购清单中的每个项目,将产品名称标准化并在库存表中进行search。

对值进行标准化将是一个将名字分成几部分并用完整版本replace部分单词和短语的过程。 例如,您可以创build一个转换查找表:

 partial full -------------------- -------------------- svr server srv server SRV Stevie Ray Vaughan office Microsoft Office etc et cetera 

您将希望通过规范化过程运行手动列表数据,并将部分值及其完整版本添加到此表中,直到它处理完所有您需要的情况。 然后运行比较。 这是一些Pythonish的伪代码:

 for each row of manual inventory excel worksheet: product = sh.Cells(row, 1) # get contents of row n, column 1 # adjust based on the structure of this sheet parts = product.split(" ") # split on spaces into a list for n, part in enumerate(parts): parts[n] = Normalize(part) # look up part in conversion table normalProduct = " ".join(parts) if LookupProduct(normalProduct): # look up normalized name in LANdesk list add to compliant list else: add to non-compliant list if len(non-compliant list) > 0: TimeForShopping(non-compliant list) 

如果您有使用SQLite或任何其他数据库与Python的经验,那么创buildLANdesk产品表,规范化和查找例程应该相当简单,但如果不是,那么更多的伪代码和例子将是有序的。 让我知道你是否需要这些。

有几个库来处理.xls文件。

XLRD允许您从Excel电子表格文件中提取数据。 所以你可以轻松地比较两个文件。 (

XLWT允许您创build一些Excel文件。 (

XLUtils需要xlrd和xlwt包。 所以,你可以很容易地读和写这个库。