Python学习笔记:处理Excel数据

资料来源《Python编程快速上手--让繁琐工作自动化》

需要安装并导入openpyxl模块

  pip install openpyxl

  import openpyxl

Excel文件三个对象

  • workbook: 工作簿,一个excel文件包含多个sheet。
  • sheet:工作表,一个workbook有多个,表名识别,如“sheet1”,“sheet2”等。
  • cell: 单元格,存储数据对象

相关操作方法如下表整理

函数/方法 说明 举例
openpyxl.load_workbook('Excel_File_Name')

打开Excle文档,函数接收文件名,返回workbook数据类型值

 

wb = openpyxl.load_workbook('example.xlsx')
openpyxl.Workbook()

创建一个新的WorkBook对象

注意.Workbook()首字母大写

>>> wb = openpyxl.Workbook()

 WorkBook.save('Excel_File_name')  保存Excle;参数为excel文件名

>>> wb.save('example2.xlsx')

WorkBook.get_sheet_names() 方法,取得工作簿中所有工作表名的列表(已淘汰不推荐)

>>> wb.get_sheet_names()
['Sheet1']

WorkBook.sheetnames 取得工作簿中所有工作表名的列表(推荐)

>>> wb.sheetnames
['Sheet1', 'Sheet2', 'Sheet3']

WorkBook.get_sheet_by_name('WorkSheet_Name') 方法,取得WorkSheet对象,即工作表(已淘汰不推荐)

>>> sheet = wb.get_sheet_by_name('Sheet1')

WorkBook['WorkSheet_Name'] 取得WorkSheet对象,即工作表(推荐);参数为工作表名称

>>> sheet = wb['Sheet1']

WorkSheet.title 取得WorkSheet名称

>>> sheet.title
'Sheet1'

WorkBook.get_active_sheet 取得活动工作表(已停用)  
WorkBook.active 取得活动工作表,返回WorkSheet对象

>>> sheet = wb.active

WorkSheet['ColumnRow'] 取得单元格,返回Cell对象;参数为单元格编号 >>> cell = sheet['A1']
 Cell.value 取得单元格的值,Cell对象value属性  

>>> cell.value
'FileName'

 Cell.column

 取得单元格的列信息,Cell对象column属性

注意返回的是数字,字母需要转换

 

>>> cell.column
1

 Cell.row  取得单元格的行信息,Cell对象row属性  

>>> cell.row
1

 Cell.coordinate  取得单元格的位置信息,Cell对象coordinate属性  

>>> cell.coordinate
'A1'

WorkShee.cell(column = a,row = b).value

取得单元格的值;Cell对象传入column和row参数

注意传入的列、行参数均为整数

>>> sheet.cell(column = 1,row = 2).value
'aaa.log'

WorkSheet.get_highest_row() 取得表格行数(已失效)  
WorkSheet.get_highest_column() 取得表格列数(已失效)  
WorkSheet.max_row 取得表格行数,不用带()

>>> sheet.max_row
6

WorkSheet.max_column 取得表格列数,不用带();注意返回的是数字

>>> sheet.max_column
3

openpyxl.cell.column_index_from_string()

列数字转换为字母函数

注意要从openpyxl.utils模块引入

>>> from openpyxl.utils import get_column_letter,column_index_from_string

 

>>> column_index_from_string('A')
1

openpyxl.cell.get_column_letter()

列字母转换为数字函数

注意要从openpyxl.utils模块引入

>>> from openpyxl.utils import get_column_letter,column_index_from_string

 

>>> get_column_letter(1)
'A'

tuple(WorkSheet['Column_Row':'Column_Row'])

返回区域内的Cell对象元组

>>> tuple(sheet['A1':'C3'])
((<Cell 'Sheet3'.A1>, <Cell 'Sheet3'.B1>, <Cell 'Sheet3'.C1>), (<Cell 'Sheet3'.A2>, <Cell 'Sheet3'.B2>, <Cell 'Sheet3'.C2>), (<Cell 'Sheet3'.A3>, <Cell 'Sheet3'.B3>, <Cell 'Sheet3'.C3>))

WorkSheet.columns[Column]

返回指定列的所有Cell对象元组(已停用)

 

WorkSheet.rows[Row]

返回指定行的所有Cell对象元组(已停用)

 
list(WorkSheet.columns)[0]

返回指定列的所有Cell对象元组

注意WorkSheet.columns现在返回的是一个生成器,可用list来转换,columns有s,注意下标从0开始

>>> list(sheet.columns)[0]
(<Cell 'Sheet3'.A1>, <Cell 'Sheet3'.A2>, <Cell 'Sheet3'.A3>, <Cell 'Sheet3'.A4>, <Cell 'Sheet3'.A5>, <Cell 'Sheet3'.A6>)

list(WorkSheet.rows)[0]

返回指定行的所有Cell对象元组

注意WorkSheet.rows方法现在返回的是一个生成器,可用list来转换,rows有s,注意下标从0开始

>>> list(sheet.rows)[0]
(<Cell 'Sheet3'.A1>, <Cell 'Sheet3'.B1>, <Cell 'Sheet3'.C1>)

WorkBook.create_sheet()

创建工作表,参数可为空

参数1:index = X,指定新工作表索引

参数2:title = 'xxx',指定新工作表名称

>>> wb.create_sheet(index = 5,title = 'New Sheet5')
<Worksheet "New Sheet5">

WorkBook.save('WorkBook_Name')  保存表格文档

>>> wb.save('example.xlsx')
>>>

posted @ 2021-09-08 22:30  shmcn  阅读(126)  评论(0)    收藏  举报