python操作excel_Python操作Excel 模块,你猜哪家强?

024048758ca4d699b9a0abd164faac8d.png

黑客技术 点击右侧关注,了解黑客的世界! b6e8c101ef6560280ceb34adc709d74e.png

3d7c1103bf8bc623764253eb02c46ff8.png

Java 开发进阶 点击右侧关注,掌握进阶之路! b6e8c101ef6560280ceb34adc709d74e.png

f059535b800734476f1ebb636cc70e1d.png

Python开发 点击右侧关注,探讨技术话题! b6e8c101ef6560280ceb34adc709d74e.png 作者丨王翔 来源丨清风Python(BreezePython)

python操作excel的模块简直不要太多,今天就为大家比较下各模块之间的优缺点。

xlutils & xlrd & xlwt   

最原始的莫过于两位老牌黄金搭档 xlrd xlwt 了,针对二者的封装有如下模块: 模块 官网
xlutilshttps://pypi.org/project/xlutils/
xlrdhttps://pypi.org/project/xlrd/
xlwthttps://pypi.org/project/xlwt/
为什么把这三个一起说?
首先,xlutils封装了xlrd xlwt,所以在使用前,会先下载这两个依赖的模块。
其次,这两个模块主要用于处理xls文件,而对xlsx的文件处理很挫,甚至xlwt不支持…
但为何到现在依然在使用这些模块,因为他对xls文档处理的优势….

win32com & DataNitro

模块 官网
win32comhttp://pythonexcels.com/python-excel-mini-cookbook/
DataNitrohttps://datanitro.com/
这两个模块又是怎么一回事儿?他俩仅支持windows系统环境
win32com这个模块大家不算陌生了,windows下的操作,哪儿他都能插一腿…至于使用,就点击链接自己看吧…
至于DataNitro,本来不想说的,但毕竟很多帖子都提到了它,我不写不太好,但大家知道他是一个Excel 的插件,安装也需单独到官网下载即可….

pandas

模块 官网
pandashttps://www.pypandas.cn/
pandas作为数据分析利器,在处理excel方面也是犀利的一腿….
import  pandas  as pd#方法一:默认读取第一个表单
df=pd.read_excel('lemon.xlsx')#这个会直接默认读取到这个Excel的第一个表单
data=df.head()#默认读取前5行的数据
print("获取到所有的值:\n{0}".format(data))#格式化输出#方法二:通过指定表单名的方式来读取
df=pd.read_excel('lemon.xlsx',sheet_name='student')#可以通过sheet_name来指定读取的表单
data=df.head()#默认读取前5行的数据
print("获取到所有的值:\n{0}".format(data))#格式化输出#方法三:通过表单索引来指定要访问的表单,0表示第一个表单#也可以采用表单名和索引的双重方式来定位表单#也可以同时定位多个表单,方式都罗列如下所示
df=pd.read_excel('lemon.xlsx',sheet_name=['python','student'])#可以通过表单名同时指定多个# df=pd.read_excel('lemon.xlsx',sheet_name=0)#可以通过表单索引来指定读取的表单# df=pd.read_excel('lemon.xlsx',sheet_name=['python',1])#可以混合的方式来指定# df=pd.read_excel('lemon.xlsx',sheet_name=[1,2])#可以通过索引 同时指定多个
data=df.values#获取所有的数据,注意这里不能用head()方法哦~
print("获取到所有的值:\n{0}".format(data))#格式化输出

xlsxwriter

模块 官网
xlsxwriterhttps://xlsxwriter.readthedocs.io/
xlsxwriter拥有丰富的特性,支持图片/表格/图表/筛选/格式/公式等,功能与openpyxl相似,优点是相比 openpyxl 还支持 VBA 文件导入,迷你图等功能,缺点是不能打开/修改已有文件,意味着使用 xlsxwriter 需要从零开始。
代码示例:
import xlsxwriter# Create a workbook and add a worksheet.
workbook = xlsxwriter.Workbook('Expenses01.xlsx')
worksheet = workbook.add_worksheet()# Some data we want to write to the worksheet.
expenses = (
    ['Rent', 1000],
    ['Gas',   100],
    ['Food',  300],
    ['Gym',    50],
)# Start from the first cell. Rows and columns are zero indexed.
row = 0
col = 0# Iterate over the data and write it out row by row.for item, cost in (expenses):
    worksheet.write(row, col,     item)
    worksheet.write(row, col + 1, cost)
    row += 1# Write a total using a formula.
worksheet.write(row, 0, 'Total')
worksheet.write(row, 1, '=SUM(B1:B4)')
workbook.close()

xlwings

模块 官网
xlwingshttp://docs.xlwings.org/en/stable/
xlwings简单强大,使用方便。而且搞笑的是,这是为数不多的模块开发者,在平台卖课的,哈哈….
5e4e265412efc1990e063da2358feebd.png image.png
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()

openpyxl

模块 官网
openpyxlhttps://openpyxl.readthedocs.io/en/latest/
最后要说说个人比较常用,也很方便的一个excel处理模块openpyxl….这个模块突出的优势在于,对excel单元格样式的设置方面特别详细。所以针对openpyxl,详细的介绍一下.
  • 写一个工作簿
>>> from openpyxl import Workbook
>>> from openpyxl.utils import get_column_letter
>>>
>>> wb = Workbook()
>>>
>>> dest_filename = 'empty_book.xlsx'
>>>
>>> ws1 = wb.active
>>> ws1.title = "range names"
>>>
>>> for row in range(1, 40):
...     ws1.append(range(600))
>>>
>>> ws2 = wb.create_sheet(title="Pi")
>>>
>>> ws2['F5'] = 3.14
>>>
>>> ws3 = wb.create_sheet(title="Data")
>>> for row in range(10, 20):
...     for col in range(27, 54):
...         _ = ws3.cell(column=col, row=row, value="{0}".format(get_column_letter(col)))
>>> print(ws3['AA10'].value)
AA
>>> wb.save(filename = dest_filename)
  • 读取现有工作簿
>>> from openpyxl import load_workbook
>>> wb = load_workbook(filename = 'empty_book.xlsx')
>>> sheet_ranges = wb['range names']
>>> print(sheet_ranges['D18'].value)3
  • 插入图像 (需要依赖pillow..)
>>> from openpyxl import Workbook
>>> from openpyxl.drawing.image import Image
>>>
>>> wb = Workbook()
>>> ws = wb.active
>>> ws['A1'] = 'You should see three logos below'
>>> # create an image
>>> img = Image('logo.png')
>>> # add to worksheet and anchor next to cells
>>> ws.add_image(img, 'A1')
>>> wb.save('logo.xlsx')
  • 使用样式
    样式用于在屏幕上显示时更改数据的外观。它们还用于确定数字的格式。
    样式可以应用于以下方面:
  • 字体设置字体大小,颜色,下划线等
  • 填充以设置图案或颜色渐变
  • 边框设置单元格上的边框
  • 单元格排列
  • 保护
以下是默认值
>>> from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font
>>> font = Font(name='Calibri',
...                 size=11,
...                 bold=False,
...                 italic=False,
...                 vertAlign=None,
...                 underline='none',
...                 strike=False,
...                 color='FF000000')
>>> fill = PatternFill(fill_type=None,
...                 start_color='FFFFFFFF',
...                 end_color='FF000000')
>>> border = Border(left=Side(border_style=None,
...                           color='FF000000'),
...                 right=Side(border_style=None,
...                            color='FF000000'),
...                 top=Side(border_style=None,
...                          color='FF000000'),
...                 bottom=Side(border_style=None,
...                             color='FF000000'),
...                 diagonal=Side(border_style=None,
...                               color='FF000000'),
...                 diagonal_direction=0,
...                 outline=Side(border_style=None,
...                              color='FF000000'),
...                 vertical=Side(border_style=None,
...                               color='FF000000'),
...                 horizontal=Side(border_style=None,
...                                color='FF000000')
...                )
>>> alignment=Alignment(horizontal='general',
...                     vertical='bottom',
...                     text_rotation=0,
...                     wrap_text=False,
...                     shrink_to_fit=False,
...                     indent=0)
>>> number_format = 'General'
>>> protection = Protection(locked=True,
...                         hidden=False)
>>>

 推荐↓↓↓ 

1f08730350813a1aa75a4a9d45f40737.png

👉16个技术公众号】都在这里!

涵盖:程序员大咖、源码共读、程序员共读、数据结构与算法、黑客技术和网络安全、大数据科技、编程前端、Java、Python、Web编程开发、Android、iOS开发、Linux、数据库研发、幽默程序员等。

4c3129eb6d1b91c0c493347fe12c9182.png万水千山总是情,点个 “ 在看” 行不行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值