Python第三方库之openpyxl(2)

简单的使用

写一个工作簿

>>> 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模式

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)

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

  1. python语音识别的第三方库_python标准库+内置函数+第三方库: 7.音频处理

    python标准库+内置函数+第三方库 欲善其事,必先利其器 这其器必是python的标准库+内置函数,话说许多第三方库, 也是对标准库的使用,进行封装,使得使用起来更方便. 这些库以使用场景来分类: ...

  2. 不属于python第三方库_在 Python 语言中,不属于机器学习领域第三方库的是______。???????????????????????????????????????...

    在 Python 语言中,不属于机器学习领域第三方库的是______.??????????????????????????????????????? 答:Arcade 图的遍历方法有两种:深度优先搜索 ...

  3. 【Linux】动态库与静态库,如何打包库,如何使用第三方库

    文章目录 回顾基础 学会打包自己的库并使用 静态库 打包库 第三方库的使用 动态库 打包库 第三方库的使用 动态库加载以及周边问题 回顾基础 这篇文章主要对动静态库进行进一步的学习,关于动静态库的一些 ...

  4. python 通过pip安装库 pycharm里面使用第三方库

    安装所需的模块(python) pip 是 Python 包管理工具,该工具提供了对Python 包的查找.下载.安装.卸载的功能. 首先命令行输入pip3 --version查看是否有pip C:\ ...

  5. [转载] 20个常用Python库及200个第三方库

    参考链接: 使用Python在Linux Terminal中格式化文本 Requests.Kenneth Reitz写的最富盛名的http库.每个Python程序员都应该有它 Scrapy 如果你从事 ...

  6. 20个常用Python库及200个第三方库

    Requests.Kenneth Reitz写的最富盛名的http库.每个Python程序员都应该有它Scrapy 如果你从事爬虫相关的工作,那么这个库也是必不可少的wxPython GUI(图形用户 ...

  7. Python基础:标准库和常用的第三方库

    目录 Python的标准库 Python常用的第三方库 标准库用法参考示例 datetime库: zlib库: sys库: urllib: Python的标准库 名称 作用 datetime 为日期和 ...

  8. vscode python 第三方库自动补全 第三方库的智能提示

    VS Code python设置第三方包的智能感知 因为使用Pyside6框架写Python程序,而QT自己的Qt Creator 在使用方面确实不如VScode轻便,故而使用VScode写Pysid ...

  9. python3.5安装pip_win10上python3.5.2第三方库安装(运用pip)

    1 首先在python官网下载并安装python.我这儿用的是python3.5.2,其自带了pip.如果你选择的版本没有自带pip,那么请查找其他的安装教程. 2 python安装好以后,我在其自带 ...

最新文章

  1. Nginx(一)------简介与安装
  2. 企业是否真的需要BI?
  3. 关于MultipleOutputFormat若干小记
  4. PostgreSQL学习笔记6之函数和操作符二
  5. 2020蓝桥杯省赛---java---B---4( 合并检测)
  6. CompareAndSwap原子操作原理
  7. Java求最小数用哪个函数_在Java中使用小数进行计算的函数
  8. 中断挂起是什么意思_深入JVM(三)- 什么是垃圾及垃圾回收算法
  9. SpringCloudGateway(一) 概览
  10. Python入门你要懂哪些?这篇文章总算讲清楚了
  11. 2017-05-24
  12. vagrant 常用的几个命令
  13. js下载视频(mp4格式)
  14. 计算机上网记录怎么清除,电脑浏览器上网记录怎么删除
  15. Jupyter 查看中间变量值的方法
  16. MQTT5.0新特性(比对3.1.1)
  17. mysql 1033_MySQL ERROR 1033 (HY000): Incorrect information in file. 处理一例
  18. 千纸鹤(小纸片)全套源码
  19. matlab 残差plot,residualplot分析
  20. 编译原理——自上而下语法分析

热门文章

  1. Blazor 0.5.0 升级及新特性介绍
  2. 基于.net standard 的动态编译实现
  3. 迁移后的Net Standard版本的类库测试和多平台项目实测
  4. 计算机网络实验进入实时模式,计算机网络实验1 PacketTrace基本使用.doc
  5. yum search php7,yum install php7 in centos6
  6. linux c之memcpy拷贝结构体到结构体、拷贝字符数组到结构体
  7. Android之JNI DETECTED ERROR IN APPLICATION: illegal class name ‘XXX‘的错误解决方法
  8. Android之面试题总结加强版(一)
  9. mybatis和hibernate的对比总结
  10. sql 之as(Aliases)别名(mysql)