Python-Excel 模块哪家强 #华为云·寻找黑马程序员#
python操作excel
最原始的莫过于两位老牌黄金搭档xlrd xlwt了,针对二者的封装有如下模块:
- xlutils & xlrd & xlwt
为什么把这三个一起说?
首先,xlutils封装了xlrd xlwt,所以在使用前,会先下载这两个依赖的模块。
其次,这两个模块主要用于处理xls文件,而对xlsx的文件处理很挫,甚至xlwt不支持…
但为何到现在依然在使用这些模块,因为他对xls文档处理的优势…
- win32com & DataNitro
这两个模块又是怎么一回事儿?他俩仅支持windows系统环境
win32com这个模块大家不算陌生了,windows下的操作,哪儿他都能插一腿…至于使用,就点击链接自己看吧…
至于DataNitro,本来不想说的,但毕竟很多帖子都提到了它,我不写不太好,但大家知道他是一个Excel 的插件,安装也需单独到官网下载即可…
- pandas
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
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
xlwings简单强大,使用方便。而且搞下ode是,这是为数不多的模块开发者,在平台卖课的,哈哈…
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
最后要说说个人比较常用,也很方便的一个excel处理模块openpyxl…这个模块突出的优势在于,对excel单元格样式的设置方面特别详细。所以针对openpyxl,详细的介绍一下.
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)
>>>
The End
OK,今天的内容就到这里,如果觉得有帮助,欢迎将文章或我的微信公众号【清风Python】
分享给更多喜欢python的人,谢谢。
作者:清风Python
Python-Excel 模块哪家强 #华为云·寻找黑马程序员#相关推荐
- 移动端开发语言的未来的猜想#华为云·寻找黑马程序员#
[摘要] #华为云.寻找黑马程序员# 不管是最早的Phonegap,还是后来的React Native.Weex,Flutter,或者是各个公司自创开发语言,都是在不断寻求开发语言统一,从而解决ios ...
- 三伏天里小试牛刀andriod开发 #华为云·寻找黑马程序员#
三伏天里小试牛刀andriod 开发 #华为云·寻找黑马程序员# 2019年07月,北京,三伏天,好热啊.越热自己还越懒得动换(肉身给的信号),但是做为产品经理/交互设计师的,总想着思考些什么(灵魂上 ...
- 大型情感剧集Selenium:3_元素定位 #华为云·寻找黑马程序员#
关于昨天的文章 今天有朋友反馈,代码运行的时候,selenium提示警告 DeprecationWarning: use options instead of chrome_options drive ...
- 黑马程序员python笔记_#华为云·寻找黑马程序员# 如何实现一个优雅的Python的Json序列化库...
[小宅按]在Python的世界里,将一个对象以json格式进行序列化或反序列化一直是一个问题.Python标准库里面提供了json序列化的工具,我们可以简单的用json.dumps来将一个对象序列化. ...
- 将Android手机打造成你的Python开发者桌面#华为云·寻找黑马程序员#
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- 使用Python开发小说下载器,不再为下载小说而发愁 #华为云·寻找黑马程序员#
需求分析 免费的小说网比较多,我看的比较多的是笔趣阁.这个网站基本收费的章节刚更新,它就能同步更新,简直不要太叼.既然要批量下载小说,肯定要分析这个网站了- 在搜索栏输入地址后,发送post请求获取数 ...
- #华为云·寻找黑马程序员# 如何实现一个优雅的Python的Json序列化库
在Python的世界里,将一个对象以json格式进行序列化或反序列化一直是一个问题.Python标准库里面提供了json序列化的工具,我们可以简单的用json.dumps来将一个对象序列化.但是这种序 ...
- python让你再也不为文章配图与素材发愁,让高清图片占满你的硬盘! #华为云·寻找黑马程序员#
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- Flask开发VIP版HttpServer #华为云·寻找黑马程序员#
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
最新文章
- n维椭球体积公式_混凝土工程量计算规则及公式
- t66y.buzz index.php,6.FizzBuzz
- Schnorr身份识别方案
- 比亚迪汉鸿蒙系统测评_华为正式进军汽车领域!鸿蒙OS车机系统加持:帮助更多车企quot;造好车quot;...
- FPGA _Verilog HDL_8位加法器设计实验
- java audiostream 用不了_AudioInputStream不起作用
- disable NSLog
- 智能语音转换文字——百度API
- unity与3DMax的单位问题
- SEO人员:如何预估SEO投资回报率?
- C++相关问题笔记(一)
- 图论/思维 C. Not Assigning
- 燕郊手机5G网络已全面覆盖,宽带提高至1000M!
- 【知识兔】Excel中的F1~F12快捷键,你还不会?强大到爆~
- 任意文件读取与下载漏洞学习
- LiteOS通信模组教程04-深度剖析LiteOS的AT框架
- css应该放在哪里,css文件应该放在哪
- ClickHouse在字节跳动的应用与实践
- Oracle不能用system用户 ORA-01017
- 影像组学病理切片案例教学课程(免费赠送)另有现成的代码,模型供大家上手使用
热门文章
- ROS笔记(1) ROS简介
- android 删除wifi文件在哪里设置,如何删除无线终端的无线配置文件
- linux利用* vim提权,Linux使用suid vim.basic文件实现提权
- mysql oracle 锁机制_Mysql锁机制
- 华为平板wps语音朗读_打工人必备的手机端WPS小技巧
- esp8266 rtos 开发环境 ubuntu_Ubuntu快速搭建C++开发环境(VS Code编辑器)
- 在Linux中切换用户的命令是set,Linux基础命令---切换用户su
- [PYTHON] for循环中关于列表list中remove method 不得不说的秘密
- App开发流程之创建项目和工程基本配置
- 使用集合组织相关数据