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、…

SQL 结合CASE WHEN 实现二维统计

在开发中往往要用到类似下面的二维统计: abtype15465type25454在SQL中使用CASE WHEN 语句可以很轻松的实现: SELECT SUM(CASE WHEN typetype1 THEN 1 ELSE 0 END) AS a ,SUM(CASE WHEN typetype2 THEN 1 ELSE 0 END) AS b FROM Table1 转载于:https://ww…

phpfind mysql怎么用_MySQL 的 find_in_set 函数使用方法

举个例子来说:有个文章表里面有个type字段,它存储的是文章类型,有 1头条、2推荐、3热点、4图文...1,12,13 等等 。现在有篇文章他既是 头条,又是热点,还是图文,type中以 1,3,4 的格式存储。那我们如何用sql…

美国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.实体创建和更新最佳实践…

Python 学习笔记(三)Function

python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量 1. Scope: • If a variable is assigned inside a def, it is local to that function.• If a variable is assigned in an enclosing def, it is non…

python xpath定位不到_Python+Selenium定位不到元素常见原因及解决办法(报:NoSuchElementException)...

#codingutf-8Created on 2016-7-20author: JenniferProject:登录百度账号from selenium importwebdriverimporttimedriver webdriver.Firefox()driver.get("http://www.baidu.com/")time.sleep(3)#点击登录:有些name为tj_login的元素为不可见的&#xff0…

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

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

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

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

javascript理论篇(详情见地址)

一篇很精彩的javascript理论知识 http://www.cnblogs.com/leadzen/archive/2008/02/25/1073404.html转载于:https://www.cnblogs.com/jangwewe/p/3161020.html

mock java_JAVA的mock工具mockito简介

在测试过程中,难免会碰到交互的外围系统不给力的情况,这时候mock就派上用场了,前段时间跟同学聊到这块的时候,他向我推荐mockito这个mock工具,试用了一下,确实很好用,这里给大家介绍下这款工具&…

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

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

DataTable转成List集合

项目开发中&#xff0c;经常会获取到DataTable对象&#xff0c;如何把它转化成一个List对象呢&#xff1f;前几天就碰到这个问题&#xff0c;网上搜索整理了一个万能类&#xff0c;用了泛型和反射的知识。共享如下&#xff1a; public class ModelConvertHelper<T> where…

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

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

java .this的用法_JAVA中this用法小结

Java中的this随处可见&#xff0c;用法也多&#xff0c;现在整理有几点&#xff1a;1. this是指当前对象自己。当在一个类中要明确指出使用对象自己的的变量或函数时就应该加上this引用。如下面这个例子中:1 public classHello {23   String s "Hello";45   pub…

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

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