栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python open函数打开excel_openpyxl创建excel?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python open函数打开excel_openpyxl创建excel?

文章目录

介绍概念

workbook 工作簿worksheet 工作表row 行 或 column 列cell 单元格 安装工作簿

创建一个空白工作簿打开一个已有工作簿工作簿的属性工作簿的方法【新建、索引、复制、粘贴、移动、删除、关闭】保存工作簿

workbook.`save`(filename) ----- ***保存工作簿 save*** 工作表

从工作簿获取一张工作表对工作表的操作见workbook方法【新建、索引、复制、粘贴、移动、删除、关闭】工作表的属性工作表的方法 单元格

从工作表获取一个单元格单元格的属性单元格的方法

介绍

官网:openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files — openpyxl 3.0.9 documentation

openpyxl是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。


概念

某些概念之间的层级关系和操作类似于字典。

如:

workbook = {“sheetname”: {“cell”: cell}},

worksheet = {“cell”: cell}

workbook 工作簿

是 sheet 工作表的一维集合。

worksheet 工作表

是 row 行 或 column 列 的一维集合。一般是指含有数据的单元格围成的工作表范围。

row 行 或 column 列

是 cell 单元格的一维集合。

cell 单元格

是最小的单位。


安装
pip install openpyxl

工作簿

支持一下语法:

del workbook["sheetname"]

workbook["sheetname"]

for worksheet in workbook: ...

创建一个空白工作簿
from openpyxl import Workbook
workbook = Workbook()

【Workbook(write_only=False, iso_dates=False)】

    参数

    【write_only=False】 : bool。工作簿是否只写。若为True,将可在恒定内存消耗下写入无限量数据。

    iso_dates=False : bool。不明。

    返回

    创建一个 只写或非只写 空白工作簿。

打开一个已有工作簿
from openpyxl import load_workbook
workbook = load_workbook("./....xlsx")

【load_workbook(filename, read_only=False, keep_vba=KEEP_VBA, data_only=False, keep_links=True)】

    参数

    【filename】 : 要打开的文件路径或类文件对象。

    【read_only=False】 : bool。是否只读,不可编辑。

    keep_vba=KEEP_VBA : bool。是否保留VBA内容(并不代表能够使用它)。

    【data_only=False】 : bool。控制带有公式的单元格是否具有公式(默认值)或上次Excel读取工作表时存储的值。

    keep_links=True : bool。是否应该保留到外部工作簿的链接。默认值为True。

    返回

    打开一个已有工作簿。

工作簿的属性

    【workbook._active_sheet_index】

    当前工作簿中活跃的工作表的索引序号。可设置

    【workbook.active】

    openpyxl.worksheet.worksheet.Worksheet对象。

    返回当前工作簿中活跃的一张工作表。(默认是上一次编辑时的工作表,即光标当前所在的工作表。)

    【workbook.worksheets】

    list。

    返回工作簿中所有工作表的列表。

    【workbook.sheetnames】

    list。

    返回工作簿中所有工作表的名称列表。

    【workbook.chartsheets】

    list。

    返回工作簿中所有图表工作表的列表。

    workbook.style_names

    list。

    返回已命名的样式的名称列表。

    workbook.name_styles

    list。

    返回可用的已命名样式的名称列表。

    【workbook.write_only】

    bool。

    返回工作簿是否是只写模式。取决于返回取决于Workbook的write_only参数。

    【workbook.read_only】

    bool。

    返回工作簿是否是只读模式。返回取决于load_workbook的read_only参数。

    【workbook.data_only】

    bool。

    返回工作簿是否是纯数据模式。返回取决于load_workbook的data_only参数。

    workbook.iso_dates

    bool。

    返回取决于Workbook的iso_dates参数。

    workbook.is_template = False

    workbook.encoding = 'utf-8’

    workbook.path == “/xl/workbook.xml”

    workbook.epoch == workbook.excel_base_date

    str。

    Windows返回“1899-12-30 00:00:00”;Mac返回“1904-01-01 00:00:00”。

    workbook.code_name = None

    workbook.loaded_theme = None or bytes(二进制xml文件内容)

    workbook.template = False

    workbook.vba_archive = None

    workbook.mime_type

    str。

    mime类型由工作簿是否是模板以及它是否包含宏来决定。Excel需要匹配文件扩展名,但openpyxl不强制这样做。

    @property
    def mime_type(self):
        """
        The mime type is determined by whether a workbook is a template or
        not and whether it contains macros or not. Excel requires the file
        extension to match but openpyxl does not enforce this.
    
        """
        ct = self.template and XLTX or XLSX
        if self.vba_archive:
            ct = self.template and XLTM or XLSM
        return ct
    
    SHARED_STRINGS= "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"
    EXTERNAL_link= "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml" 
    WORKSHEET_TYPE= "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" 
    COMMENTS_TYPE= "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml" 
    STYLES_TYPE= "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" 
    CHARTSHEET_TYPE= "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml" 
    DRAWING_TYPE= "application/vnd.openxmlformats-officedocument.drawing+xml"
    CHART_TYPE= "application/vnd.openxmlformats-officedocument.drawingml.chart+xml"
    CHARTSHAPE_TYPE= "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml"
    THEME_TYPE= "application/vnd.openxmlformats-officedocument.theme+xml"
    XLTM= "application/vnd.ms-excel.template.macroEnabled.main+xml" 
    XLSM= "application/vnd.ms-excel.sheet.macroEnabled.main+xml" 
    XLTX= "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml" 
    XLSX= "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" 
    
    

    workbook.properties

    openpyxl.packaging.core.documentProperties对象。

    
    Parameters:
    	creator='', 
    	title=None, 
    	description=None, 
    	subject=None, 
    	identifier=None, 
    	language=None, 
    	created=datetime.datetime(2022, 3, 23, 11, 13, 51), 
    	modified=datetime.datetime(2022, 3, 23, 13, 17, 43), 
    	lastModifiedBy='', 
    	category=None, 
    	contentStatus=None, 
    	version=None, 
    	revision=None, 
    	keywords=ne, 
    	lastPrinted=None
    

    workbook.views

    list。

    [
    
    Parameters:
    	visibility='visible', 
    	minimized=False, 
    	showHorizontalScroll=True, 
    	showVerticalScroll=True, 
    	showSheetTabs=True, 
    	xWindow=3440, 
    	yWindow=2810, 
    	windowWidth=14400, 
    	windowHeight=7270, 
    	tabRatio=600, 
    	firstSheet=0, 
    	activeTab=1, 
    	autoFilterDateGrouping=True]
    

    workbook.rels

    openpyxl.packaging.relationship.RelationshipList对象。

    
    Parameters:
    	Relationship=[]
    

    workbook.security

    openpyxl.workbook.protection.WorkbookProtection对象。

    
    Parameters:
        workbookPassword=None, 
        workbookPasswordCharacterSet=None, 
        revisionsPassword=None, 
        revisionsPasswordCharacterSet=None, 
        lockStructure=None, 
        lockWindows=None, 
        lockRevision=None, 
        revisionsAlgorithmName=None, 
        revisionsHashValue=None, 
        revisionsSaltValue=None, 
        revisionsSpinCount=None,
        workbookAlgorithmName=None, 
        workbookHashValue=None, 
        workbookSaltValue=None, 
        workbookSpinCount=None
    

    workbook.calculation

    openpyxl.workbook.properties.CalcProperties对象。

    
        Parameters:
        calcId=191029, 
        calcMode=None, 
        fullCalcOnLoad=True, 
        refMode=None, 
        iterate=None, 
        iterateCount=None, 
        iterateDelta=None, 
        fullPrecision=None, 
        calcCompleted=None, 
        calcOnSave=None, 
        concurrentCalc=None, 
        concurrentManualCount=None, 
        forceFullCalc=None
    

    workbook.defined_names

    openpyxl.workbook.defined_name.DefinedNameList对象。

    
    Parameters:
    	definedName=[]
    

    workbook.shared_strings

    openpyxl.utils.indexed_list.IndexedList对象。

    []
    

工作簿的方法【新建、索引、复制、粘贴、移动、删除、关闭】

    【workbook.create_sheet(title=None, index=None)】----- 新建工作表 create_sheet

    在工作簿内创建一个工作表(在一个可选的索引)并返回。只读模式不可用。

    参数

    title=None : str。工作表的可选标题。

    index=None : int。可选的插入工作表的位置。

    返回

    创建的新的openpyxl.worksheet.worksheet.Worksheet对象。

    【workbook.create_chartsheet(title=None, index=None)】 ----- 新建建图表工作表 create_chartsheet

    在指定索引创建一个图标工作表并返回。只读模式无法使用。

    参数

    title=None : str。工作表名称。

    index=None : int。指定索引位置。

    返回

    创建的新的openpyxl.chartsheet.chartsheet.Chartsheet对象。

    【workbook.index(worksheet)】 -----索引工作表 index

    返回指定工作表在工作簿中的索引。

    参数

    worksheet : openpyxl.worksheet.worksheet.Worksheet对象。

    要索引的工作表。

    返回

    索引值。

    【workbook.copy_worksheet(from_worksheet)】 ----- 复制工作表 copy_worksheet

    在工作簿内部复制工作表。只读或只写模式无法使用。

    参数

    from_worksheet : openpyxl.worksheet.worksheet.Worksheet对象。

    要复制的工作表。

    返回

    复制的工作表的副本。

    openpyxl.worksheet.worksheet.Worksheet对象。

    [workbook._add_sheet(worksheet, index=None) ] ----- 粘贴工作表 _add_sheet

    在工作簿内部指定索引位置增加一个内部工作表。只读模式不可调用。与copy_worksheet联用相当于粘贴。

    参数

    worksheet : openpyxl.worksheet.worksheet.Worksheet对象。待粘贴工作表。

    index=None : int。指定索引位置。

    返回

    None。

    【workbook.move_sheet(sheet, offset=0)】 ----- 移动工作表 move_sheet

    移动工作簿中指定工作表offset个偏移量。

    参数

    sheet : str or openpyxl.worksheet.worksheet.Worksheet对象。待移动工作表。

    offset : int。偏移量。

    返回

    None。

    【workbook.remove(worksheet) == del workbook["sheetname"]】 ----- 删除工作表 remove

    从工作簿删除指定工作表。

    参数

    worksheet : openpyxl.worksheet.worksheet.Worksheet对象。待移除工作表。

    返回

    None。

    【workbook.close()】 ----- 关闭工作簿 close

    如果工作簿文件打开,则关闭它。只影响只读和只写模式。

    workbook.add_named_style(style)

    添加一个命名的样式。

    workbook.create_named_range(name, worksheet=None, value=None, scope=None)

    向workbook.defined_names中新建一个openpyxl.workbook.defined_name.DefinedName对象。value因worksheet存在而不同。

def create_named_range(self, name, worksheet=None, value=None, scope=None):
    """Create a new named_range on a worksheet"""
    defn = DefinedName(name=name, localSheetId=scope)
    if worksheet is not None:
        defn.value = "{0}!{1}".format(quote_sheetname(worksheet.title), value)
    else:
        defn.value = value

    self.defined_names.append(defn)

    workbook.add_named_range(named_range)

    向workbook.defined_names列表中添加一个现有的openpyxl.workbook.defined_name.DefinedName对象。
    已弃用。改用workbook.defined_names.append(named_range)

    workbook.get_named_range(name)

    返回名称指定的范围。

    已弃用。改用workbook.defined_names[name]

    workbook.get_named_ranges()

    返回所有命名范围。

    已弃用。改用workbook.defined_names.definedName

    workbook.remove_named_range(named_range)

    从工作簿中删除一个named_range。

    已弃用。改用del workbook.defined_names[named_range]

保存工作簿 workbook.save(filename) ----- 保存工作簿 save

保存工作簿到指定文件。只写模式下,只能调用一次;只读模式无法调用。


工作表 从工作簿获取一张工作表

    直接获取

    workbook._active_sheet_index = index 指定活跃表格的序号

    workbook.active 获取工作簿中活跃的一张工作表。

    通过名称获取

    workbook["sheetname"] 获取指定名称的工作表。

    workbook[workbook.sheetnames[index]] 获取指定序列对应名称的工作表

    通过索引序号获取

    workbook.worksheets[index] 获取指定索引序号的一张工作表。

对工作表的操作见workbook方法【新建、索引、复制、粘贴、移动、删除、关闭】 工作表的属性

    worksheet.encoding = “utf-8’”

    str。

    worksheet.path = “/xl/worksheets/sheetNone.xml”

    str。

    【worksheet.parent】

    openpyxl.workbook.workbook.Workbook对象。

    返回工作表父对象。

    worksheet.legacy_drawing = None

    【worksheet.sheet_state = ‘visible’】

    str。

    工作表的状态,可设置。

    worksheet.SHEETSTATE_VISIBLE = 'visible'
    worksheet.SHEETSTATE_HIDDEN = 'hidden'
    worksheet.SHEETSTATE_VERYHIDDEN = 'veryHidden'
    

    worksheet.mime_type = “application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml”

    【worksheet.title】

    str。

    返回或设置工作表标题,确保其有效。限制为31个字符,没有特殊字符。重复的标题将按数字递增。如果新建而没有设置过,则返回默认的“Sheet”。

    print(worksheet.title)
    
    worksheet.title = "Sheet1"
    print(worksheet.title)
    
    ---
    Sheet
    Sheet1
    

    【worksheet.dimensions == worksheet.calculate_dimension()】

    str。【“A1:D6”】

    返回工作表的含内容的单元格范围。

    【worksheet.rows】

    generator。

    返回工作表中有数据范围内所有行的生成器。可迭代(遍历)。

    for row in worksheet.rows:
        print(row)
    
    ---
    (, , , )
    (, , , )
    (, , , )
    (, , , )
    (, , , )
    (, , , )
    

    【worksheet.columns】

    generator。

    返回工作表中有数据范围内所有列的生成器。可迭代(遍历)。

for column in worksheet.columns:
    print(column)
    
---
(, , , , , )
(, , , , , )
(, , , , , )
(, , , , , )

    【worksheet.values】

    generator。

    返回一个逐行生成工作表中的所有单元格值的生成器。可迭代(遍历)。

    for result in worksheet.values:
        print(result)
        
    ---
    (None, None, None, None)
    (None, 11111, None, None)
    (None, None, None, None)
    (None, None, None, None)
    (None, None, None, None)
    (None, None, None, 2222)
    

    【worksheet.max_column】

    int。

    返回含内容的单元格的最大列序号。【从1开始】

    【worksheet.max_row】

    int。

    返回含内容的单元格的最大行序号。【从1开始】

    【worksheet.min_column】

    int。

    返回含内容的单元格的最小列序号。【从1开始】

    【worksheet.min_row】

    int。

    返回含内容的单元格的最小行序号。【从1开始】

    【worksheet.merged_cells】

    openpyxl.worksheet.cell_range.MultiCellRange对象。

    返回工作表中合并的单元格范围。如返回“A1:D4”。(得先有合并单元格)

    【worksheet.tables】

    openpyxl.worksheet.table.TableList对象。

    返回工作表的所有表格的字典映射。(得先有表格)

    {
    'Table1': 
        
    	Parameters:
            id=1, 
            name='Table1', 
            displayName='Table1', 
            comment=None, 
            ref='A1:E5', 
            tableType=None, 
            headerRowCount=1, 
            insertRow=None, 
            insertRowShift=None, 
            totalsRowCount=None, 
            totalsRowShown=None, 
            published=None, 
            headerRowDxfId=None, 
            dataDxfId=None, 
            totalsRowDxfId=None, 
            headerRowBorderDxfId=None, 
            tableBorderDxfId=None, 
            totalsRowBorderDxfId=None, 
            headerRowCellStyle=None, 
            dataCellStyle=None, 
            totalsRowCellStyle=None, 
            connectionId=None, 
            autoFilter=None, 
            sortState=None, 
            tableColumns=[], 
            tableStyleInfo=None
    }
    

    worksheet.print_area

    None or list。

    返回或设置工作表的打印区域,如果没有设置则为None。要设置,提供一个范围比如‘A1:D4’或一个范围列表。

    worksheet.print_area = "A1:D6"
    print(worksheet.print_area)
    
    ---
    ['$A$1:$D$6']
    

    worksheet.print_title_cols

    None or str。

    返回或设置每页左侧要打印的列,如果没有设置则为None。要设置,提供一个范围比如‘A:D’。

    worksheet.print_title_cols = "A:D"
    print(worksheet.print_title_cols)
    
    ---
    A:D
    

    worksheet.print_title_rows

    None or str。

    返回或设置每页顶部要打印的行,如果没有设置则为None。要设置,提供一个范围比如‘1:3’。

    worksheet.print_title_rows = "1:3"
    print(worksheet.print_title_rows)
    
    ---
    1:3
    

    worksheet.print_titles

    None or str。

    行列中只设置了其中一个,则返回其中之一;否则全部返回,“,”隔开。如果没有设置则为None。

    worksheet.print_title_cols = "A:D"
    worksheet.print_title_rows = "1:3"
    print(worksheet.print_titles)
    
    ---
    1:3,A:D
    

    worksheet.BREAK_COLUMN = 2

    worksheet.BREAK_NONE = 0

    worksheet.BREAK_ROW = 1

    worksheet.page_breaks

    tuple。

    (
    
    Parameters:
    	count=0, 
    	manualBreakCount=0, 
    	brk=[]
    , 
    
    Parameters:
    	count=0, 
    	manualBreakCount=0, 
    	brk=[]
    )
    

    worksheet.col_breaks

    openpyxl.worksheet.pagebreak.ColBreak对象。

    
    Parameters:
    	count=0, 
    	manualBreakCount=0, 
    	brk=[]
    

    worksheet.row_breaks

    openpyxl.worksheet.pagebreak.RowBreak对象。

    
    Parameters:
    	count=0, 
    	manualBreakCount=0, 
    	brk=[]
    

    worksheet.column_dimensions

    openpyxl.worksheet.dimensions.DimensionHolder对象。

    worksheet.row_dimensions

    openpyxl.worksheet.dimensions.DimensionHolder对象。

    worksheet.conditional_formatting

    openpyxl.formatting.formatting.ConditionalFormattingList对象。

    worksheet.formula_attributes

    dict。

    worksheet.views

    openpyxl.worksheet.views.SheetViewList对象。

    
    Parameters:
    sheetView=
    [
    	
    	Parameters:
    		windowProtection=None, 
    		showFormulas=None, 
    		showGridLines=None, 
    		showRowColHeaders=None, 
    		showZeros=None, 
    		rightToLeft=None, 
    		tabSelected=None, 
    		showRuler=None, 
    		showOutlineSymbols=None, 
    		defaultGridColor=None, 
    		showWhiteSpace=None, 
    		view=None, 
    		topLeftCell=None, 
    		colorId=None, 
    		zoomScale=None, 
    		zoomScaleNormal=None, 
    		zoomScaleSheetLayoutView=None, 
    		zoomScalePageLayoutView=None, 
    		zoomToFit=None, 
    		workbookViewId=0, 
    		pane=None, 
    		selection=
        		[
            		
    				Parameters:
    					pane=None, 
    					activeCell='A1', 
    					activeCellId=None, 
    					sqref='A1'
        		]
    ]
    

    worksheet.sheet_view == worksheet.views.sheetView[0]

    openpyxl.worksheet.views.SheetView对象。

    
    Parameters:
    	windowProtection=None, 
    	showFormulas=None, 
    	showGridLines=None, 
    	showRowColHeaders=None, 
    	showZeros=None, 
    	rightToLeft=None, 
    	tabSelected=True, 
    	showRuler=None, 
    	showOutlineSymbols=None, 
    	defaultGridColor=None, 
    	showWhiteSpace=None, 
    	view=None, 
    	topLeftCell=None, 
    	colorId=None, 
    	zoomScale=None, 
    	zoomScaleNormal=None, 
    	zoomScaleSheetLayoutView=None, 
    	zoomScalePageLayoutView=None, 
    	zoomToFit=None, 
    	workbookViewId=0, 
    	pane=None, 
    	selection=
    		[
    			
    			Parameters:
    				pane=None, 
    				activeCell='D1', 
    				activeCellId=None, 
    				sqref='D1'
    		]
    

    【worksheet.active_cell == worksheet.selected_cell】

    worksheet.sheet_view.selection[0].activeCell

    worksheet.sheet_view.selection[0].sqref

    str。【“A1”】

    返回工作表中活跃的单元格。即当前光标所在的单元格(默认上次编辑之后停留在的单元格)。

    worksheet.show_gridlines == worksheet.sheet_view.showGridLines

    worksheet.freeze_panes == worksheet.sheet_view.pane.topLeftCell

    可设置。

    worksheet.sheet_properties

    openpyxl.worksheet.properties.WorksheetProperties对象。

    
    Parameters:
    	codeName=None, 
    	enableFormatConditionsCalculation=None, 
    	filterMode=None, 
    	published=None, 
    	syncHorizontal=None, 
    	syncRef=None, 
    	syncVertical=None, 
    	transitionevaluation=None, 
    	transitionEntry=None, 
    	tabColor=None, 
    	outlinePr=
    		
    		Parameters:
    			applyStyles=None, 
    			summaryBelow=True, 
    			summaryRight=True, 
    			showOutlineSymbols=None, 
    			pageSetUpPr=
    				
    				Parameters:
    					autoPageBreaks=None, 
    					fitToPage=None
    

    worksheet.show_summary_below == worksheet.sheet_properties.outlinePr.summaryBelow

    worksheet.show_summary_right == worksheet.sheet_properties.outlinePr.summaryRight

    worksheet.page_setup

    openpyxl.worksheet.page.PrintPageSetup对象。

    
    Parameters:
    	orientation='portrait', 
    	paperSize=9, 
    	scale=None, 
    	fitToHeight=None, 
    	fitToWidth=None, 
    	firstPageNumber=None, 
    	useFirstPageNumber=None, 
    	paperHeight=None, 
    	paperWidth=None, 
    	pageOrder=None, 
    	usePrinterDefaults=None, 
    	blackAndWhite=None, 
    	draft=None, 
    	cellComments=None, 
    	errors=None, 
    	horizontalDpi=None, 
    	verticalDpi=None, 
    	copies=None, 
    	id=None
    

    worksheet.page_margins

    openpyxl.worksheet.page.PageMargins对象。

    
    Parameters:
    	left=0.7, 
    	right=0.7, 
    	top=0.75, 
    	bottom=0.75, 
    	header=0.3, 
    	footer=0.3
    

    worksheet.paper_size = None

    worksheet.PAPERSIZE_LETTER = '1'
    worksheet.PAPERSIZE_LETTER_SMALL = '2'
    worksheet.PAPERSIZE_TABLOID = '3'
    worksheet.PAPERSIZE_LEDGER = '4'
    worksheet.PAPERSIZE_LEGAL = '5'
    worksheet.PAPERSIZE_STATEMENT = '6'
    worksheet.PAPERSIZE_EXECUTIVE = '7'
    worksheet.PAPERSIZE_A3 = '8'
    worksheet.PAPERSIZE_A4 = '9'
    worksheet.PAPERSIZE_A4_SMALL = '10'
    worksheet.PAPERSIZE_A5 = '11'
    

    worksheet.orientation = None

    worksheet.ORIENTATION_LANDSCAPE = 'landscape'
    worksheet.ORIENTATION_PORTRAIT = 'portrait'
    

    worksheet.HeaderFooter

    openpyxl.worksheet.header_footer.HeaderFooter对象。

    
    Parameters:
    	differentOddEven=None, 
    	differentFirst=None, 
    	scaleWithDoc=None, 
    	alignWithMargins=None, 
    	oddHeader=, 	oddFooter=, 	evenHeader=, 	 evenFooter=, 	  firstHeader=, 	firstFooter=
    

    worksheet.oddHeader == worksheet.HeaderFooter.oddHeader

    openpyxl.worksheet.header_footer.HeaderFooterItem对象。可设置。

    worksheet.oddFooter == worksheet.HeaderFooter.oddFooter

    openpyxl.worksheet.header_footer.HeaderFooterItem对象。可设置。

    worksheet.evenHeader == worksheet.HeaderFooter.evenHeader

    openpyxl.worksheet.header_footer.HeaderFooterItem对象。可设置。

    worksheet.evenFooter == worksheet.HeaderFooter.evenFooter

    openpyxl.worksheet.header_footer.HeaderFooterItem对象。可设置。

    worksheet.firstHeader == worksheet.HeaderFooter.firstHeader

    openpyxl.worksheet.header_footer.HeaderFooterItem对象。可设置。

    worksheet.firstFooter == worksheet.HeaderFooter.firstFooter

    openpyxl.worksheet.header_footer.HeaderFooterItem对象。可设置。

    worksheet.data_validations

    openpyxl.worksheet.datavalidation.DataValidationList对象。

    
    Parameters:
    	disableprompts=None, 
    	xWindow=None, 
    	yWindow=None, 
    	count=0, 
    	dataValidation=[]
    

    worksheet.auto_filter

    openpyxl.worksheet.filters.AutoFilter对象。

    
    Parameters:
    	ref=None, 
    	filterColumn=[], 
    	sortState=None
    

    worksheet.print_options

    openpyxl.worksheet.page.PrintOptions对象。

    
    Parameters:
    	horizontalCentered=None, 
    	verticalCentered=None, 
    	headings=None, 
    	gridLines=None, 
    	gridLinesSet=None
    

    worksheet.protection

    openpyxl.worksheet.protection.SheetProtection对象。

    
    Parameters:
    	selectLockedCells=False, 
    	selectUnlockedCells=False, 
    	algorithmName=None, 
    	sheet=False, 
    	objects=False, 
    	insertRows=True, 
    	insertHyperlinks=True, 
    	autoFilter=True, 
    	scenarios=False, 
    	formatColumns=True, 
    	deleteColumns=True, 
    	insertColumns=True, 
    	pivotTables=True, 
    	deleteRows=True, 
    	formatCells=True, 
    	saltValue=None, 
    	formatRows=True, 
    	sort=True, 
    	spinCount=None, 
    	password=None, 
    	hashValue=None
    

    worksheet.scenarios

    openpyxl.worksheet.scenario.ScenarioList对象。

    
    Parameters:
    	current=None, 
    	show=None, 
    	sqref=None, 
    	scenario=[]
    

    worksheet.sheet_format

    openpyxl.worksheet.dimensions.SheetFormatProperties对象。

    
    Parameters:
    	baseColWidth=8, 
    	defaultColWidth=None, 
    	defaultRowHeight=14.0, 
    	customHeight=None, 
    	zeroHeight=None, 
    	thickTop=None, 
    	thickBottom=None, 
    	outlineLevelRow=None, 
    	outlineLevelCol=None
    
工作表的方法

    获取单元格并赋值 — cell()

    【worksheet.cell(row, column, value=None)】

    如果给定坐标单元格存在,则返回该单元格对象,否则创建后再返回。并当value不为None时,使该单元格的值为value。

    参数

    row : int。行号(从1开始)。

    column : int。列号(从1开始)。

    value=None : 数字、时间、字符串、bool值或者无。

    返回

    openpyxl.cell.cell.Cell对象。

    计算数据容量 — calculate_dimension()

    【worksheet.calculate_dimension() == worksheet.dimensions】

    str。【“A1:D6”】

    返回工作表的含数据的单元格范围。

    追加一行数据 — append()

    【worksheet.append(iterable)】

    如果iterable是字典类型,字典的键(可以是数字或字母字符串)将作为值对应的列号。否则,按iterable的顺序进行追加。

    参数

    iterable : list | tuple | range | generator || dict。

    返回

    None。

worksheet.append([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

worksheet.append({1: 4, 2: 2, 3: 3, 4: 7, 5: 9, 6: 6, 7: 5, 8: 8, 9: 10, 10: 1})

worksheet.append({"B": 4, "J": 2, "I": 3, "A": 7, "E": 9, "D": 6, "C": 5, "F": 8, "G": 10, "H": 1})

    添加图片 — add_image()

    【worksheet.add_image(img, anchor=None)】

    锚定单元格插入图片。

    参数

    img : openpyxl.drawing.image.Image对象。

    anchor : str。指定图像左上角所锚定的单元格。

    返回

    None。

from openpyxl.drawing.image import Image # 导入模块

img = Image("./test.jpg")   # 加载指定路径图像
img.width = 200 		    # 设置图像宽度
img.height = 100 		    # 设置图像高度
# img.anchor = "D5" 	    # 指定图像左上角所锚定的单元格

worksheet.add_image(img, anchor="D5")

    添加图表 — add_chart()

    worksheet.add_chart(chart, anchor=None)

    锚定单元格插入图表。

    参数

    chart : openpyxl.chart的子类对象。

    anchor : str。指定图像左上角所锚定的单元格。

    返回

    None。

from openpyxl.chart import AreaChart  # 导入

chart = AreaChart()  # 创建一个某类型空白图表

worksheet.add_chart(chart, anchor="D5")

    添加表格 — add_table()**

    worksheet.add_table(table)

    添加表格。

    参数

    table : openpyxl.worksheet.table.Table对象。

    返回

    None。

from openpyxl.worksheet.table import Table # 导入

# 数据准备
data=[
['Apples', 10000, 5000, 8000, 6000],
['Pears', 2000, 3000, 4000, 5000],
['Bananas', 6000, 6000, 6500, 6000],
['Oranges', 500, 300, 200, 700],
]
worksheet.append(["Fruit", "2011", "2012", "2013", "2014"])
for row in data:
    worksheet.append(row)
    
tab = Table(displayName="Table1", ref="A1:E5")  # 添加表格

worksheet.add_table(tab)

    添加数据验证 — add_data_validation()

    worksheet.add_data_validation(data_validation)

    参数

    data_validation : openpyxl.worksheet.datavalidation.DataValidation对象。

    返回

    None。

from openpyxl.worksheet.datavalidation import DataValidation  # 导入

dv = DataValidation(type="list", formula1='"Dog,Cat,Bat"', allow_blank=True)

dv.promptTitle = 'List Selection'
dv.prompt = 'Please select from the list'

dv.errorTitle = 'Invalid Entry'
dv.error = 'Your entry is not in the list'

worksheet.add_data_validation(dv)

c1 = worksheet["A1"]
dv.add(c1)

    以列为单位获取单元格或单元格的值 — iter_cols()

    【worksheet.iter_cols(min_col=None, max_col=None, min_row=None, max_row=None, values_only=False)】

    参数

    min_col=None : int or None。指定获取的最小列号。默认为1。(1为基数的索引序号)

    max_col=None : int or None。指定获取的最大列号。默认为含数据的最大单元格列号。(1为基数的索引序号)

    min_row=None : int or None。指定获取的最小行号。默认为1。(1为基数的索引序号)

    max_row=None : int or None。指定获取的最大行号。默认为含数据的最大单元格行号。(1为基数的索引序号)

    values_only=False : bool。是否只返回单元格的值。若为True,将只给出单元格的值。

    返回

    generator。

result = list(worksheet.iter_cols(min_col=1, max_col=None, min_row=1, max_row=None, values_only=False))
print(result)

---
[
(, , , , ), 
(, , , , ), 
(, , , , ), 
(, , , , ), 
(, , , , ), 
(, , , , ), 
(, , , , )
]


result = list(worksheet.iter_cols(min_col=1, max_col=None, min_row=1, max_row=None, values_only=True))
print(result)

---
[
(None, None, None, None, None), 
(None, None, 1, 1, 1), 
(None, None, 1, 1, 1), 
(None, None, 1, 1, 1), 
(None, None, 1, 1, 1), 
(None, None, 1, 1, 1),
(None, None, 1, 1, 1)
]

    以行为单位获取单元格或单元格的值 — iter_rows()

    【worksheet.iter_rows(min_row=None, max_row=None, min_col=None, max_col=None, values_only=False)】

    参数

    min_col=None : int or None。指定获取的最小列号。默认为1。(1为基数的索引序号)

    max_col=None : int or None。指定获取的最大列号。默认为含数据的最大单元格列号。(1为基数的索引序号)

    min_row=None : int or None。指定获取的最小行号。默认为1。(1为基数的索引序号)

    max_row=None: int or None。指定获取的最大行号。默认为含数据的最大单元格行号。(1为基数的索引序号)

    values_only=False : bool。是否只返回单元格的值。若为True,将只给出单元格的值。

    返回

    generator。

result = list(worksheet.iter_rows(min_col=1, max_col=None, min_row=1, max_row=None, values_only=False))
print(result)
  
---
[
 (, , , , , , ), 
 (, , , , , , ), 
 (, , , , , , ), 
 (, , , , , , ), 
 (, , , , , , )
]
    
  
result = list(worksheet.iter_rows(min_col=1, max_col=None, min_row=1, max_row=None, values_only=True))
print(result)
  
---
[
(None, None, None, None, None, None, None), 
(None, None, None, None, None, None, None), 
(None, 1, 1, 1, 1, 1, 1), 
(None, 1, 1, 1, 1, 1, 1), 
(None, 1, 1, 1, 1, 1, 1)
]
    删除列 — delete_cols()

【worksheet.delete_cols(idx, amount=1)】

从idx列向右删除amount数量的列。(包括idx列,是删除列,不是清空内容)。

参数

idx : int。开始列号。

amount=1 : int。删除数量。

返回

None。

worksheet.delete_cols(4, 2)

    删除行 — delete_rows()

    【worksheet.delete_rows(idx, amount=1)】

    从idx行向下删除amount数量的行。(包括idx行,是删除行,不是清空内容)。

    参数

    idx : int。开始行号。

    amount=1 : int。删除数量。

    返回

    None。

    worksheet.delete_rows(3, 2)
    

    左侧插入列 — insert_cols()

【worksheet.insert_cols(idx, amount=1)】

参数

idx : int。指定列号。

amount : int。插入数量。

返回

None。

worksheet.insert_cols(2, 2)

    上方插入行 — insert_rows()

    【worksheet.insert_rows(idx, amount=1)】

    参数

    idx : int。指定行号。

    amount : int。插入数量。

    返回

    None。

worksheet.insert_rows(2, 2)

    合并单元格 — merge_cells()

​ 【worksheet.merge_cells(range_string=None, start_row=None, start_column=None, end_row=None, end_column=None)】

参数

range_string=None : str。指定单元格范围的字符串,如"B1:G3"。提供值,则后续参数都被忽略

start_row=None : int。开始行号。

start_column=None : int。开始列号。

end_row=None : int。结束行号。

end_column=None : int。结束列号。

返回

None。

worksheet.merge_cells("A1:D4")
# worksheet.merge_cells(start_row=1, start_column=1, end_row=4, end_column=4)

    解除单元格合并 — unmerge_cells()

​ 【worksheet.unmerge_cells(range_string=None, start_row=None, start_column=None, end_row=None, end_column=None)】

worksheet.unmerge_cells("A1:D4")
# worksheet.unmerge_cells(str(worksheet.merged_cells))
# worksheet.unmerge_cells(str(worksheet.merged_cells.ranges[0]))
# worksheet.unmerge_cells(start_row=1, start_column=1, end_row=4, end_column=4)

    移动单元格范围 — move_range()

​ 【worksheet.move_range(cell_range, rows=0, cols=0, translate=False)】

参数

【cell_range】 : str or openpyxl.worksheet.cell_range.CellRange对象。要移动的单元格范围,如"B1:G3"。

【rows=0】 : int。移动行数,>0向下,<0向上。

【cols=0】 : int。移动列数,>0向右,<0向左。

translate=False : bool。是否转化公式。

返回

None。

worksheet.move_range("D1:J7", 2, 2)

    打印设置 — set_printer_settings()

​ worksheet.set_printer_settings(paper_size, orientation)

参数

paper_size : 见worksheet.paper_size。

orientation : 见worksheet.orientation。

返回

None。

def set_printer_settings(self, paper_size, orientation):
    """Set printer settings """

    self.page_setup.paperSize = paper_size
    self.page_setup.orientation = orientation

单元格 从工作表获取一个单元格

worksheet["A1"]

worksheet.cell(row, col)

list(worksheet.rows)[row-1][col-1](有数据单元格范围内)

list(worksheet.columns)[col-1][row-1](有数据单元格范围内)

单元格的属性

    【cell.parent】

    openpyxl.worksheet.worksheet.Worksheet对象。

    返回单元格父对象。

    【cell.encoding == worksheet.encoding】

    str。

    返回单元格编码,继承自父对象。

    【cell.base_date == workbook.epoch】

    str。

    【cell.value】

    返回类型取决于单元格内容。

    返回或设置单元格的值。

    【cell.internal_value】

    返回类型取决于单元格内容。

    返回单元格的值。不能用来设置。

    【cell.coordinate】

    str。

    返回单元格的坐标,如“A1”。

    【cell.column == cell.col_idx】

    int。

    返回单元格列号,如 1。

    【cell.column_letter】

    str。

    返回单元格列号对应字母,如“A”。

    【cell.row】

    int。

    返回单元格行号,如 1。

    【cell.comment】

    openpyxl.comments.Comment对象。

    返回与此单元格相关联的注释。

    【cell.hyperlink】

    openpyxl.worksheet.hyperlink.Hyperlink对象。

    
    Parameters:
        ref='A1', 
        location=None, 
        tooltip=None, 
        display='https://www.baidu.com/', 
        id='rId1'
    

    【cell.data_type】

    str。

    返回单元格数据的类型。

    【cell.is_date】

    bool。

    返回单元格内容是否为日期。

    【cell.has_style】

    bool。

    返回单元格是否有设置样式。

    cell.style

    str。

    返回单元格样式名称。

    cell.style_id

    int。

    返回单元格样式id。

    cell.alignment

    openpyxl.styles.proxy.StyleProxy对象。

    
    Parameters:
        horizontal=None, 
        vertical=None, 
        textRotation=0, 
        wrapText=None, 
        shrinkToFit=None, 
        indent=0.0, 
        relativeIndent=0.0, 
        justifyLastLine=None, 
        readingOrder=0.0
    

    cell.border

    openpyxl.styles.proxy.StyleProxy对象。

    
    Parameters:
        outline=True, 
        diagonalUp=False, 
        diagonalDown=False, 
        start=None, 
        end=None, 
        left=
            Parameters:
                style=None, 
                color=None, 
        right=
            Parameters:
                style=None, 
                color=None, 
        top=
            Parameters:
                style=None, 
                color=None, 
        bottom=
            Parameters:
                style=None, 
                color=None, 
        diagonal=
            Parameters:
                style=None, 
                color=None, 
                vertical=None, 
                horizontal=None
    

    cell.font

    openpyxl.styles.proxy.StyleProxy对象。

    
    Parameters:
        name='宋体', 
        charset=None, 
        family=2.0, 
        b=False, 
        i=False, 
        strike=None, 
        outline=None, 
        shadow=None, 
        condense=None, 
        color=
            Parameters:
                rgb=None, 
                indexed=None, 
                auto=None, 
                theme=10, 
                tint=0.0, 
                type='theme', 
                extend=None, 
                sz=11.0, 
                u='single', 
                vertAlign=None, 
                scheme='minor'
    

    cell.fill

    openpyxl.styles.proxy.StyleProxy对象。

    
    Parameters:
        patternType=None, 
        fgColor=
            Parameters:
                rgb='00000000', 
                indexed=None, 
                auto=None, 
                theme=None, 
                tint=0.0, 
                type='rgb', 
        bgColor=
            Parameters:
                rgb='00000000', 
                indexed=None, 
                auto=None, 
                theme=None, 
                tint=0.0, 
                type='rgb'
    

    cell.protection

    openpyxl.styles.proxy.StyleProxy对象。

    
    Parameters:
        locked=True, 
        hidden=False
    

    cell.pivotButton

    bool。

    cell.quotePrefix

    bool。

单元格的方法

    【cell.offset(row=0, column=0)】

    获取相对于当前单元格有一定偏移量的单元格。

    参数

    row=0 : int。行的偏移量。

    column=0 : int。列的偏移量。

    返回

    openpyxl.cell.Cell对象。

    cell = worksheet.cell(1, 1)
    
    cell_offset1 = cell.offset(2, 3) ---(1+2,1+3)
    cell_offset2 = cell_offset1.offset(-1, -1) -- (1+2-1,1+3-1)
    
    print(cell.coordinate, cell_offset1.coordinate, cell_offset1.coordinate)
    
    ---
    A1 D3 C2
    

    cell.check_error(value)

    def check_error(self, value):
        """Tries to convert Error" else N/A"""
        try:
            return str(value)
        except UnicodeDecodeError:
            return u'#N/A'
    

    cell.check_string(value)

    def check_string(self, value):
        """Check string coding, length, and line break character"""
        if value is None:
            return
        # convert to str string
        if not isinstance(value, str):
            value = str(value, self.encoding)
        value = str(value)
        # string must never be longer than 32,767 characters
        # truncate if necessary
        value = value[:32767]
        if next(ILLEGAL_CHARACTERS_RE.finditer(value), None):
            raise IllegalCharacterError
        return value
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/783475.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号