前言
那些从网页上面爬取下来的大量的数据, 是需要用 Excel 来做一个清理和整理的。
有成堆的科学实验数据是需要导入到excel里面去的, 因为要对那些数据进行一下分析工作。
当了一名程序员, 这名程序员的面向是逼格。
我们应该怎么来做这件事, 那就是选择一个生产力的工具, 这个行为需要做到合理, 也需要做到优雅。
因为有那些不辞辛苦地去钻研的厉害人物们的努力, 所以大家现在在处理excel这个表格软件的时候, 已经能够用到非常多的现成的库了, 这些里面比较有名的代表作品包括了下面这些:
当那些五花八门的扩展包一个接一个地出现在大家面前的时候, 有些人就弄不明白该怎么办了, 他们心里总会产生一些疑惑, 想要弄清楚在这么多选择里面, 哪一个包才是最贴合自己需求的最合适的那个东西。
文章会从配置环境、文档操作以及基本功能等这些方面, 来将以上提到的那些扩展进行比较, 好让各位能够结合到自己实际的生产环境当中去做出选择, 选定一个最适合自己的Excel操作库, 这样将来面对其他的那些库的时候, 你也能做到心中有数, 甚至能比较自信地去说一句话, 这句话的大致意思是: 你是个好扩展, 但可惜我们不合适。
接下来呢, 我们通过多方面的比较这种操作, 让您对这些扩展有一个基础的了解。
1.环境配置
不管这个模块做得有多么好, 它也必须要在匹配的并且正确的版本以及Excel的这个版本之下, 方才能够运行起来。

所有的这些库都是支持与这个东西的。
大家得注意一下, 这里只能对xls格式的文件进行支持操作, 具体来说就是指微软 2003版本以及更早之前产生的这些文件类型。与此同时还要考虑到只支持。
2.文档操作
因为设计模式存在不同这一情况, 所以导致基本的新建文件、修改文件、以及保存文件等功能, 在不同的库中存在着一定的差异, 比如并不支持打开现有文件, 也不支持修改现有文件, 同样不支持对新建文件的命名等等, 这是由于作为excel插件, 它需要依托于excel本身的操作来运行, 具体的情况详见下图。

3.基本功能
因为设计的目的是不一样的, 所以每个模块通常会把重点放在某一种功能上面, 大家各有各的拿手之处。
可以结合 VBA 实现对 Excel 进行编程, 具备强大的数据输入分析能力, 同时拥有非常丰富的接口, 并且能够结合 /numpy/ 轻松应对包括 Excel 数据处理在内的各项工作任务。
这款工具的操作界面非常简单, 易于上手, 而且它涵盖的功能面特别广,像单元格格式设置、图片插入、表格制作、公式计算、数据筛选、添加批注以及保护文件内容这类需求都能解决, 几乎什么都有, 其中图表方面的功能表现突出, 算是它的强项, 不过有一个问题是它对 VBA 这个编程语言的支持度并不是很好。
数据处理是 的立身之本, Excel 作为 输入和输出数据的容器。
从命名的角度来看, 能够明显地看出这是一类用于处理特定应用的扩展工具, 而Excel仅仅是这个库所能够实现的功能当中比较小部分的一个体现。除此之外, 该库还支持其他多种多样的相关操作。
需要特别引起注意的是, 这个库并不会以单独存在的形式出现, 用户想要获取它的话, 必须通过安装其他相关的组件来进行, 比如某些特定的开发包或者运行环境才能够得到使用。
它拥有丰富的特性, 支持图片, 支持表格, 支持图表, 支持筛选, 支持格式, 支持公式等。它的功能与相似产品差不多。
它的的优点是, 相比同类产品, 它还支持 VBA 文件导入, 还支持迷你图等功能。它的缺点是, 它不能打开已有文件, 也不能修改已有文件。这意味用户如果想要使用这个软件, 就只能从零开始。
它是一个插件, 被内嵌在Excel里面, 可以完全替代VBA, 在Excel当中使用它。既然被称为Excel中的某种东西, 那么协同其他相关的库亦是小事一桩。然而, 这是付费插件......
是基于 xlrd 和 xlwt 的老牌的包,算是该领域里面的先驱, 功能特点处于中等的水平, 比较大的缺点是目前只能支持 xls 文件。
4.性能
我们对若干个库实施了最为基础性的写入操作以及读取操作方面的测试, 这些测试分别借助了不同的库来完成添加数据的具体动作, 同时也完成了对数据的读取动作, 在其中涉及到的数据规模是1000行与700列这么大规模的数据操作情形, 在此基础上我们获取了其所耗费的时间长度, 并且将这一系列的操作重复执行多次之后进行了平均值的计算工作以得到结果。
另外一个需要说明的情况就是, 在不同的计算机硬件配置条件方面以及不同的运行环境条件下面所呈现出来的最终测试结果肯定是会有相应的差异存在的, 所以相关数据内容仅仅是供人们进行参考之用罢了。

5.小结
通过上面的分析, 大家相信对几个库已经有了初步的了解, 而且在写文的时侯, 作者自己心里也在琢磨着这些库各自最适合用的场景是什么样的。
如果你不想使用图形用户界面并且希望为Excel提供更多的功能, 你可以从以下选项中选择一个;假如你需要进行科学计算以及处理大量数据, 那么我建议你选择其中两个选项中的组合;要是你想要编写Excel脚本并且虽然懂得一种编程语言但不会VBA, 这时你就应该考虑另外两种替代方案中的一种;最后,对于某个特别强大的工具, 如果使用者具备相应的其他领域编程经验, 也是可以考虑使用的。
然而, 该事物在本质上是对 COM 的一种封装形式, 且其自身并没有提供十分全面细致的文档资料, 这导致刚接触的新手在使用该事物的时候会觉得稍微有一点难以适应和感到痛苦。
你可以结合你这边自己的实际需求, 还有你们那边的生产环境的情况, 去选择一个, 比较合适的那个负号的Excel模块。
6.代码是6.1, 这个部分是基本的代码。
python
`import xlwings as xw`
#连接到excel
workbook = xw.Book(r'path/myexcel.xlsx')#连接excel文件
#连接到指定单元格
data_range = workbook.sheets('Sheet1').range('A1')
#写入数据
data_range.value = [1,2,3]
#保存
workbook.save()
6.2 基本代码
python
`import xlsxwriter as xw`
#新建excel
workbook = xw.Workbook('myexcel.xlsx')
#新建工作薄
worksheet = workbook.add_worksheet()
#写入数据
worksheet.wirte('A1',1)
#关闭保存
workbook.close()
6.第 3 部分是基本代码的内容。
python
`import xlrd #读取数据`
import xlwt #写入数据
import xlutils #操作excel
-----#xlrd库
#打开excel文件
workbook = xlrd.open_workbook('myexcel.xls')
#获取表单
worksheet = workbook.sheet_by_index(0)
#读取数据
data = worksheet.cell_value(0,0)
----#xlwt库
#新建excel
wb = xlwt.Workbook()
#添加工作薄
sh = wb.add_sheet('Sheet1')
#写入数据
sh.write(0,0,'data')
#保存文件
wb.save('myexcel.xls')
-----#xlutils库
#打开excel文件
book = xlrd.open_workbook('myexcel.xls')
#复制一份
new_book = xlutils.copy(book)
#拿到工作薄
worksheet = new_book.getsheet(0)
#写入数据
worksheet.write(0,0,'new data')
#保存
new_book.save()
6.第4部分, 这是关于基础代码的内容。
python
`import win32com.client as wc`
#启动Excel应用
excel_app = wc.Dispatch('Excel.Application')
#连接excel
workbook = excel_app.Workbooks.Open(r'e:/myexcel.xlsx' )
#写入数据
workbook.Worksheets('Sheet1').Cells(1,1).Value = 'data'
#关闭并保存
workbook.SaveAs('newexcel.xlsx')
excel_app.Application.Quit()
6.第5项, 也就是基本代码这一部分内容。
python
` import openpyxl`
# 新建文件
workbook = openpyxl.Workbook()
# 写入文件
sheet = workbook.activesheet['A1']='A1'
# 保存文件
workbook.save('test.xlsx')