Python第三方库之openpyxl(2)

Python第三方库之openpyxl(2)

简单的使用

写一个工作簿

>>> from openpyxl import Workbook
>>> from openpyxl.compat import range
>>> 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

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

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

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

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

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

使用数字格式

>>> import datetime
>>> from openpyxl import Workbook
>>> 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‘].value
0.031400000000000004
>>>
>>> ws[‘B1‘].number_format
‘0%‘

使用公式

>>> from openpyxl import Workbook
>>> wb = Workbook()
>>> ws = wb.active
>>> # 添加一个简单的公式
>>> ws["A1"] = "=SUM(1, 1)"
>>> wb.save("formula.xlsx")

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

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

>>> from openpyxl.utils import FORMULAE
>>> "HEX2DEC" in FORMULAE
True

合并/ 分割单元格

>>> from openpyxl.workbook import Workbook
>>>
>>> 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 import Workbook
>>> from openpyxl.drawing.image import Image
>>>
>>> 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‘)

折叠列

>>> import openpyxl
>>> 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 import dataframe_to_rows
wb = Workbook()
ws = wb.active

for r in dataframe_to_rows(df, index=True, header=True):
    ws.append(r)

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

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

wb = Workbook()
ws = wb.active

for 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 import WriteOnlyCell
wb = Workbook(write_only=True)
ws = wb.create_sheet()

cell = WriteOnlyCell(ws)
cell.style = ‘Pandas‘

 def format_first_row(row, cell):

    for c in row:
        cell.value = c
        yield cell

rows = dataframe_to_rows(df)
first_row = format_first_row(next(rows), cell)
ws.append(first_row)

for row in rows:
    row = list(row)
    cell.value = row[0]
    row[0] = cell
    ws.append(row)

wb.save("openpyxl_stream.xlsx")

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

将工作表转换为Dataframe

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

df = DataFrame(ws.values)

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

data = ws.values
cols = next(data)[1:]
data = list(data)
idx = [r[0] for r in data]
data = (islice(r, 1, None) for r in data)
df = DataFrame(data, index=idx, columns=cols)

原文地址:https://www.cnblogs.com/Keys819/p/9315126.html

时间: 2024-10-06 23:58:22

Python第三方库之openpyxl(2)的相关文章

Python第三方库之openpyxl(4)

Python第三方库之openpyxl(4) 2D柱状图 在柱状图中,值被绘制成水平条或竖列. 垂直.水平和堆叠柱状图. 注意:以下设置影响不同的图表类型 1.在垂直和水平条形图之间切换,分别设置为col或bar 2.当使用堆叠图表时,overlap需要设置为100 3.如果条是水平的,x轴和y轴要反转 from openpyxl import Workbook from openpyxl.chart import BarChart, Series, Reference wb = Workboo

Python第三方库之openpyxl(12)

Python第三方库之openpyxl(12) 地面天气图 在工作表上的列或行中安排的数据可以在一个表中绘制.当您想要在两组数据之间找到最佳组合时,一个表面图表是有用的.正如在地形图中一样,颜色和图案表示的区域是相同的值域.默认情况下,所有的表面图都是3D的.通过设置rotation 和perspective来创建2D线框和轮廓图. from openpyxl import Workbook from openpyxl.chart import ( SurfaceChart, SurfaceCh

Python第三方库之openpyxl(11)

Python第三方库之openpyxl(11) Stock Charts(股票图) 在工作表上按特定顺序排列的列或行中的数据可以在股票图表中绘制.正如其名称所暗示的,股票图表通常被用来说明股价的波动.然而,这张图表也可以用于科学数据.例如,你可以用一个股票图表来表示每日或每年的温度波动.您必须按照正确的顺序组织您的数据,以创建股票图表. 在工作表中组织股票图表数据是非常重要的.例如,为了创建一个简单的高低收盘价的股票图表,您应该按照这个顺序将您的数据以高.低和接近的形式排列为列标题. 尽管股票图

python第三方库系列之十七--multiprocessing库

说到并发,我们想到多线程和多进程. 那到底使用多进程还是多线程呢?这得看情况.我们的程序一般分为: 1)耗网络的(有很大一部分时间是在网络交互): 2)耗CPU的(得充分利用多核) 在第一种情况,时间大部分被网络延时占用,所以使用多线程和多进程都差不多. 在第二种情况,时间的长短由CPU是否被充分利用决定,看<python第三方库系列之十二--多线程threading库>可知,多线程会出现锁机制,所以多进程更胜一筹,充分利用了CPU,节省了时间. 以下是一个多进程例子: #coding=utf

python第三方库学习之xlrd读取Excel文件

因为经常会涉及到从Excel表中导数据,所以就学习了python的xlrd来读取excel中的数据. 1.xlrd的安装 xlrd是python的第三方库,所以是需要自己安装的,可以在python的官网http://pypi.python.org/pypi/xlrd下载该模块来安装,也可以通过其他手段,比如easy_install或者pip啥的,我已经安装好pip所以就用最懒的方式来安装了pip install xlrd来安装. 2.分析excel文件的层级对象 要读取excel的数据,就要了解

python第三方库系列之十四--集群化部署定时任务apscheduler库

如果将定时任务部署在一台服务器上,那么这个定时任务就是整个系统的单点,这台服务器出现故障的话会影响服务.对于可以冗余的任务(重复运行不影响服务),可以部署在多台服务器上,让他们同时执行,这样就可以很简单的避免单点.但是如果任务不允许冗余,最多只能有一台服务器执行任务,那么前面的方法显然行不通.本篇文章就向大家介绍如何避免这种互斥任务的单点问题,最后再介绍一下基于APScheduler的分布式定时任务框架,这个框架是通过多个项目的实践总结而成的. 对于运行在同一台服务器上的两个进程,可以通过加锁实

Python 第三方库xlrd读取Excel代码

Python 第三方库xlrd读取Excel代码: 安装xlrd 安装xlrd,只需运行setup即可,另外你也可以直接解压缩到你的project中,也可以直接用 xlrd的API 获取Excel,这里称之为work book open_workbook(file_name) 获取指定的Sheet,有两种方式 sheet = xls.sheet_by_index(sheet_no) sheet = xls.sheet_by_name(sheet_name) 获取整行和整列的值(数组) sheet

使用Pycharm安装Python第三方库

除了使用easy_insatll和pip工具安装Python第三方库外还可以使用pycharm安装Python第三方库,步骤如下: 1.打开pycharm,点击File,再点击settings 2.点击settings之后再点击project下面的project Interpreter将会出现如下界面: 3.接下来点击上面界面右上角的"+"将会出现如下界面:然后在搜索框中搜索需要安装的第三方库(此处搜索requests)然后点击界面左下角的Install Package进行安装即可.

Windows下如何安装python第三方库lxml

lxml是个非常有用的python库,它可以灵活高效地解析xml,与BeautifulSoup.requests结合,是编写爬虫的标准姿势. 参考 Windows下如何安装python第三方库lxml 文章记于16年,此篇文章对此更新并加以细节解释 工具/原料 + python + pip +我的电脑 win7 + 64位 方法概述 以下步骤的前提是: 已安装python, 已安装好pip, 已将python安装目录下的scripts目录(如D:\Python27\Scripts)添加到系统环境