以此为例:
1. workbook对象
wb = openpyxl.load_workbook(fileName)
属性:
sheetsNames = wb.sheetnames 所有表的名字 sheets = wb.worksheets 所有的表 activeSheet = wb.active 当前活跃的表 isReadOnly = wb.read_only 判断是否以只读方式打开Excel encoding = wb.encoding 文档的字符集编码 props = sb.properties 文档元数据(标题、创建者、时间)
方法:
wb.remove_sheet(wb['表1']) #参数为sheet对象,删除一个表 wb.create_sheet(3,'表3') #增加一个表
2. sheet对象
sheet = wb['表1'] 获取一个表
属性:
sheet.title #表格标题 sheet.dimensions #表格大小, 左上角坐标:右下角坐标 A1:D4 sheet.max_row #表格最大行数 sheet.min_row #表格最小行数 sheet.max_column #表格最大列数 sheet.min_column #表格最小列数 sheet.freeze_panes #冻结窗格 sheet.rows #按行获取单元格(Cell对象) sheet.columns #按列获取单元格(Cell对象) sheet.values #按行获取表格的内容(数据)
(1)遍历
①按行
for i in sheet.rows: for j in range(0,sheet.max_column): print(i[j].value,end=',') print('')
②按列
for i in sheet.columns: for j in range(0,sheet.max_row): print(i[j].value,end=',') print('')
③ sheet.values
for i in sheet.values: print(i)
(2)冻结窗格
方法:
(1)获取单元格cell
sheet.cell(row,col) #第row行第col列的单元格 sheet['B3'] #第3行第2列的单元格 sheet.iter_rows(min_row,max_row,min_col,max_col) #在矩形区域内,一次取得一行的单元格组成一个元组 sheet.iter_columns(min_col,max_col,min_row,max_row) #一列单元格组成一个元组
后面两个方法,一次获得一个元组,元组的每个元素为一个cell
例:获取2行2列到4行3列的区域
rows = [] for row in sheet1.iter_rows(2,4,2,3): rows.append(row) for row in rows: for i in range(len(row)): print(row[i].value,end=' ') print('')
cols = [] for col in sheet1.iter_cols(2,3,2,4): cols.append(col) for col in cols: for i in range(len(col)): print(col[i].value,end=' ') print('')
(2)获取一块区域
cells = sheet['B2:C4'] #B2到C4之间的区域 cells = sheet[2:4] #第2行到第4行之间的区域 cells = sheet['B:D'] #第B列到第D列之间的区域
以sheet[2:4]为例:返回的是元组: ((A2,B2,C2) , (A3,B3,C3) ,(A4,B4,C4))
(3)其它操作
①增加行、删除行、增加列、删除列
sheet.insert_rows(rowNum,amount) #从第rowNum行起插入amount行空行 sheet.delete_rows(rowNum,amount) #从第rowNum行起删除amount行 sheet.insert_cols(colNum,amount) sheet.delete_cols(colNum,amount)
3. 单元格cell对象
cell = sheet['B3'] #第3行第2列 cell = sheet.cell(3,2)
tips:Excel行数是数字,而列是字母
属性:
row:单元格所在行 #4 column:单元格所在列 #3 value:单元格的值 # coordinate:单元格的坐标 #C4
修改单元格的值:
cell.value='newValue' sheet['D3']='newValue' sheet.cell(3,4,'newValue') wb.save(filename) #保存