python如何安装扩展库openpyxl和numpy_Python第三方库之openpyxl(2)

Python第三方库之openpyxl(2)

简单的使用

写一个工作簿

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

>>> from openpyxl importWorkbook>>> from openpyxl.compat importrange>>> from openpyxl.utils importget_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)

View Code

读一个现有的工作簿

>>> from openpyxl importload_workbook>>> wb = load_workbook(filename = 'empty_book.xlsx')>>> sheet_ranges = wb['range names']>>> print(sheet_ranges['D18'].value)3

注意:在loadworkbook中有几个可以使用的标志

1.guess_types 在读取单元时启用或禁用(默认)类型推断

2.data_only 控制带有公式的单元格是否有公式(默认)或上次Excel读取表的值

3.keep_vba 控制任何可视的基本元素是否被保留(默认)。如果它们被保存了它们仍然是不可编辑的

注意:openpyxl目前没有在Excel文件中读取所有可能的项目,因此如果打开并保存相同的名称,那么图像和图表将从现有文件中丢失

使用数字格式

>>> importdatetime>>> from openpyxl importWorkbook>>> wb =Workbook()>>> ws =wb.active>>> #使用Python datetime设置日期

>>> ws['A1'] = datetime.datetime(2010, 7, 21)>>>

>>> ws['A1'].number_format'yyyy-mm-dd h:mm:ss'

>>> #您可以在具体情况下启用类型推断

>>> wb.guess_types =True>>> #使用字符串和%符号设置百分比

>>> ws['B1'] = '3.14%'

>>> wb.guess_types =False>>> ws['B1'].value0.031400000000000004

>>>

>>> ws['B1'].number_format'0%'

使用公式

>>> from openpyxl importWorkbook>>> wb =Workbook()>>> ws =wb.active>>> #添加一个简单的公式

>>> ws["A1"] = "=SUM(1, 1)"

>>> wb.save("formula.xlsx")

注意:你必须使用英文名作为一个函数,函数参数必须用逗号隔开,而不是其他的标点符号,比如分号

openpyxl从来没有计算过公式但是可以检查公式的名称

>>> from openpyxl.utils importFORMULAE>>> "HEX2DEC" inFORMULAE

True

合并/ 分割单元格

>>> from openpyxl.workbook importWorkbook>>>

>>> wb =Workbook()>>> ws =wb.active>>>

>>> ws.merge_cells('A2:D2')>>> ws.unmerge_cells('A2:D2')>>>

>>> #相当于

>>> ws.merge_cells(start_row=2, start_column=1, end_row=4, end_column=4)>>> ws.unmerge_cells(start_row=2, start_column=1, end_row=4, end_column=4)

插入图像

>>> from openpyxl importWorkbook>>> from openpyxl.drawing.image importImage>>>

>>> wb =Workbook()>>> ws =wb.active>>> ws['A1'] = 'You should see three logos below'

>>> #制作一个图片

>>> img = Image('logo.png')

>>> #在单元格旁边添加工作表和锚

>>> ws.add_image(img, 'A1')>>> wb.save('logo.xlsx')

折叠列

>>> importopenpyxl>>> wb =openpyxl.Workbook()>>> ws =wb.create_sheet()>>> ws.column_dimensions.group('A','D', hidden=True)>>> wb.save('group.xlsx')

与pandas和NumPy一起工作

NumPy支持

openpyxl已经为NumPy类型的浮点数、整数和布尔型提供了支持。使用pandas的时间戳类型支持DateTimes

Working with Pandas Dataframes

openpyxl.utils.dataframe.dataframe_to_rows()函数提供了一个简单的方式来处理Pandas Dataframes

from openpyxl.utils.dataframe importdataframe_to_rows

wb=Workbook()

ws=wb.activefor r in dataframe_to_rows(df, index=True, header=True):

ws.append(r)

虽然pandas本身支持转换为Excel,但这为客户端代码提供了额外的灵活性,包括将dataframes直接传输到文件的能力。

将一个dataframe转换为高亮显示标题和索引的工作表

wb =Workbook()

ws=wb.activefor r in dataframe_to_rows(df, index=True, header=True):

ws.append(r)for cell in ws['A'] + ws[1]:

cell.style= 'Pandas'wb.save("pandas_openpyxl.xlsx")

或者,如果你只想转换数据你可以使用write-only模式

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

from openpyxl.cell.cell importWriteOnlyCell

wb= Workbook(write_only=True)

ws=wb.create_sheet()

cell=WriteOnlyCell(ws)

cell.style= 'Pandas'

defformat_first_row(row, cell):for c inrow:

cell.value=cyieldcell

rows=dataframe_to_rows(df)

first_row=format_first_row(next(rows), cell)

ws.append(first_row)for row inrows:

row=list(row)

cell.value=row[0]

row[0]=cell

ws.append(row)

wb.save("openpyxl_stream.xlsx")

View Code

这段代码和标准的工作簿同样适用

将工作表转换为Dataframe

要将工作表转换为Dataframe,您可以使用values属性。如果工作表没有标题或索引,这很容易

df = DataFrame(ws.values)

如果工作表确实有标题或索引,比如由pandas创建的,那么就需要做更多的工作

data =ws.values

cols= next(data)[1:]

data=list(data)

idx= [r[0] for r indata]

data= (islice(r, 1, None) for r indata)

df= DataFrame(data, index=idx, columns=cols)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301244.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[翻译]在GC上加入DPAD

本文90%通过机器翻译,另外10%译者按照自己的理解进行翻译,和原文相比有所删减,可能与原文并不是一一对应,但是意思基本一致。译者水平有限,如果错漏欢迎批评指正译者Bing Translator、InCerry,另外感谢Hex、…

美国Thinkfun的“编程三剑客”少儿编程从入门到精通

▲数据汪特别推荐点击上图进入玩酷屋学编程现在有多火,小木就不多说啦!很多爸爸妈妈都想让小朋友早点接触编程,掌握这门未来世界的通用“语言”,但又怕太早使用电脑、iPad等电子产品,影响孩子视力。今天给大家推荐一套…

解决scrollViewDidScroll do not work的方法

2019独角兽企业重金招聘Python工程师标准>>> 别忘记在在包含了scrollView的ViewController中的viewDidload方法中设置scrollView的delegate [self.scrollView setDelegate:self]; 关于delegate:一般一个ui的delegate都在其父类中指定 view.delegateself…

基于ABP落地领域驱动设计-05.实体创建和更新最佳实践

围绕DDD和ABP Framework两个核心技术,后面还会陆续发布核心构件实现、综合案例实现系列文章,敬请关注! ABP Framework 研习社(QQ群:726299208) ABP Framework 学习及实施DDD经验分享;示例源码、…

mysql isam 食物_MySQL常用存储引擎之MyISAM

1. mysql 5.5之前版本默认存储引擎1.1 因为这个原因现在还有大量服务器在使用这myisam引擎的表1.2 myisam是mysql大部分系统表和临时表使用的存储引擎2. myisam存储引擎表由myd和myi组成2.1 myd存储数据信息2.2 myi存储索引信息2.3 frm记录表结构的,所有存储引擎都有…

每日一笑 | 史上最贴心的骗子

全世界只有3.14 % 的人关注了数据与算法之美(图源网络,侵权删)

基于ABP落地领域驱动设计-06.正确区分领域逻辑和应用逻辑

系列文章基于ABP落地领域驱动设计-01.全景图基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则基于ABP落地领域驱动设计-03.仓储和规约最佳实践和原则基于ABP落地领域驱动设计-04.领域服务和应用服务的最佳实践和原则基于ABP落地领域驱动设计-05.实体创建和更新最佳实践…

基于ABP落地领域驱动设计-03.仓储和规约最佳实践和原则

dotNET兄弟会 专注.Net开源技术及跨平台开发!致力于构建完善的.Net开放技术文库!为.Net爱好者提供学习交流家园!公众号 围绕DDD和ABP Framework两个核心技术,后面还会陆续发布核心构件实现、综合案例实现系列文章,敬请…

我国最新十大黑科技发布,颠覆你的想象!

全世界只有3.14 % 的人关注了数据与算法之美人工智能的飞速发展,让“黑科技”一词深入人心。目不暇接的各种前沿技术,一再刷新人们的认知世界。所谓“黑科技”,不仅仅要够炫酷,更要有足够的“生活温度”,实现真正的人性…

基于ABP落地领域驱动设计-04.领域服务和应用服务的最佳实践和原则

围绕DDD和ABP Framework两个核心技术,后面还会陆续发布核心构件实现、综合案例实现系列文章,敬请关注! ABP Framework 研习社(QQ群:726299208) ABP Framework 学习及实施DDD经验分享;示例源码、…

嗓子痛引发大抢救!33岁程序员的垂死经历,为所有人敲响警钟!

全世界只有3.14 % 的人关注了数据与算法之美最近广州天气多变,再加上不规律的饮食、作息,数据汪的扁桃体已经肿痛两三天了。在一大杯“凉茶”下肚后,最终我还是选择去医院做一次检查。万幸的是,检查结果出来后,医生说只…

.NET也内卷了,BAT大厂近日上演抢人大战!

这两年到处都流行“内卷”这个词,而IT互联网行业则是内卷重灾区。还不太明白什么是内卷?看看这个段子:关于内卷,网上有个比喻,说如果葵花宝典被公开了,就会变成一个灾难。因为如果只有一个人拥有的话&#…

EFDC水模型 初学者入门 及软件下载学习指导

EFDC模型有三个不同的版本,它们分别代表了计算机不同的操作菜单和功能。其中的两个版本功能齐全,包括了EFDC 所有的产品版本。另外一个是简化版,涵盖了水动力学(包括盐度和温度的影响),毒物,沉积…

每日一笑 | 在地铁上被老奶奶让座是一种什么样的体验?

全世界只有3.14 % 的人关注了数据与算法之美(图源网络,侵权删)

java access dbq_Java-Access汇总

http://www.doczj.com/doc/3b7b55100b4e767f5acfce38.html/view/d1c01b43a8956bec0975e33e.html在网上看了一些资料,基本上都是一样的。怎么试也行不通。于是我怀疑为什么那些错误的技术文章如此大张旗鼓的到处都是。今天有人问我如果把主机托管出去,也就…

一个IT人的非典型职场十年 (5)

2019独角兽企业重金招聘Python工程师标准>>> 对于非资深IT人来讲,IT咨询(IT Consulting)显得是比较高帅富一些,各种衣着光鲜的咨询报告,各种西装革履的顾问。 这先随便说两句什么是IT咨询,IT顾问究竟是在做啥工作。 I…

基于ABP落地领域驱动设计-01.全景图

什么是领域驱动?领域驱动设计(简称:DDD)是一种针对复杂需求的软件开发方法。将软件实现与不断发展的模型联系起来,专注于核心领域逻辑,而不是基础设施细节。DDD适用于复杂领域和大规模应用,而不…

伦敦科学博物馆用百年智慧打造的一套探索书,拓展孩子的科学、数学和艺术思维...

▲数据汪特别推荐点击上图进入玩酷屋说到素质教育,我们应该比较熟悉。不过,这几年,比素质教育更火的一个概念是——STEAM教育。教育家们普遍认为:在科学、技术、工程、艺术、数学之间存在着一种相互支撑、相互补充、共同发展的关系…

java中事务特性_「java三分钟」事务的传播特性详解

关注我,每天三分钟,带你轻松掌握一个Java相关知识点。事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播。换言之,一个带事务的方法调用了另一个带事务的方法,被调用的方法它怎么处理自己事务和调用方…

基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则

前言上一篇 基于ABP落地领域驱动设计-01.全景图 概述了DDD理论和对应的解决方案、项目组成、项目引用关系,以及基于ABP落地DDD的通用原则。从这本篇开始,会更加深入地介绍在基于 ABP Framework 落地DDD过程中的最佳实践和原则。围绕DDD和ABP Framework两…