Python第三方库之openpyxl(2),pythonopenpyxl,Python第三方库
Python第三方库之openpyxl(2),pythonopenpyxl,Python第三方库
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)View Code
读一个现有的工作簿
>>> 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‘].value0.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 FORMULAETrue
合并/ 分割单元格
>>> 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_rowswb = 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 import WriteOnlyCellwb = 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 cellrows = 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")View Code
这段代码和标准的工作簿同样适用
将工作表转换为Dataframe
要将工作表转换为Dataframe,您可以使用values属性。如果工作表没有标题或索引,这很容易
df = DataFrame(ws.values)
如果工作表确实有标题或索引,比如由pandas创建的,那么就需要做更多的工作
data = ws.valuescols = 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)
Python第三方库之openpyxl(2)
相关内容
- Python:数据可视化pyecharts的使用,pythonpyecharts,什么是
- 一个案例深入Python中的__new__和__init__,__new___init_,准备
- Mac配置eclipse+pydev+Python遇到的问题,eclipsepydev,最近在研
- idapython api 记录,idapythonapi,GetOperand
- Kafka(八)Python生产者和消费者API使用,kafkapython,单线
- Macaca初体验-PC端(Python),macaca-pc,前言:Macaca
- python appium鎿嶄綔鎵嬫満鍙奱pp鍚勭鏂规硶,pythonapp
- python 环境下 安装 gdal,pythongdal,起因:需要做一个城市
- python 使用gRPC,python使用grpc,Python gRP
- python 之开发工具 sublimetext 3,pythonsublimetext,一、前言
评论关闭