Python操作电子表格:openpyxl模块,需安装
教程:
# openpyxl # 一、安装: pip install openpyxl import openpyxl # 一、创建工作表 wb = openpyxl.Workbook() # ws = wb.active # 创建wb时会自动帮你创建一个Sheet # 此方法获得默认索引为0的名为Sheet的工作名,除非手动更改 # print(ws) <Worksheet "Sheet"> # 在末尾创建Sheet,(按Sheet1,Sheet2,Sheet3自动命名) ws0 = wb.create_sheet() # 在末尾创建mySheet的工作表 ws1 = wb.create_sheet('mySheet') # 在前端插入mySheet1的工作表 ws2 = wb.create_sheet('mySheet1', 0) # 在倒数第二个位置插入工作表 ws3 = wb.create_sheet('mySheet2', -1) # Sheet重命名: ws3.title = 'mySheet3' ws0.sheet_properties.tabColor = '1072BA' # 16进制 # 根据表名获取工作表 ws = wb['Sheet'] print(wb.sheetnames) # ['mySheet1', 'Sheet', 'Sheet1', 'mySheet3', 'mySheet'] # for ws in wb: # print(ws.title) mySheet1... # 复制工作表 ws4 = wb.copy_worksheet(ws1) print(wb.sheetnames) # ['mySheet1', 'Sheet', 'Sheet1', 'mySheet3', 'mySheet', 'mySheet Copy'] # 激活工作表(设置当前工作表) wb.active = ws print(wb.active) # 二、数据操作 # 1、给单元格赋值 c = ws['A4'] # c = 5 不可以用这种方法给cell赋值,因为这不是给单元格赋值,这是在给c赋值 c.value = 1024 #?可以吗?答 ,可以的, ws['A4'].value = 233 # 答,可以的 ws['A4'] = 4 # 答,可以的 # 也可以用下面的方法赋值 c1 = ws.cell(row=4, column=2, value=10) # 创建10*10个空的cell,遍历一次就可以创建值为None的Cell for row in range(1,11): for column in range(1,11): cs = ws.cell(row, column) # 创建10*10个空的cell 遍历以后将自动创建(省略第3个参数value=None) pass # 2、获取多个单元格 # 用切片访问多个Cell(表格) cs = ws['A1':'C2'] print(cs) # ((<Cell 'Sheet'.A1>, <Cell 'Sheet'.B1>, <Cell 'Sheet'.C1>), (<Cell 'Sheet'.A2>, <Cell 'Sheet'.B2>, <Cell 'Sheet'.C2>)) # 取值范围行或列 返回值元组Cell对象 print(ws['A']) # A列 print(ws[1]) # 第1行 print(ws['C':'D']) # C 到 D 列:同下 print(ws['C:D']) # C 到 D 列:同上 print(ws[1:5]) # 1 到 5 行 # 迭代指定的行列,通过传递第5个参数:values_only = True 可以只获得单元格Cell的值。 iterR = ws.iter_rows(1, 3, 1, 5) # 3行5列 for r in iterR: # 打印行: print(r) # 每打印一次得到一行:元组Cell对象 iterC = ws.iter_cols(1, 3, 1, 5, values_only=True) # 3列5行 for c in iterC: # 打印列: print(c) # 每打印一次得到一列:传递了参数,values_only=True,所以是元组Cell对象.value # 迭代所有行、列 print('----') # 会把所有行,所有列打印出来。因为上面# 创建10*10个空的cell,所以会打印10行10列 for r in ws.rows: # 打印行: print(r) # 10 行 for c in ws.columns: # 打印列: print(c) # 10 列 # 获取Cell的值 for row in ws.values: print(row) # (None, None, ... # (4, 10, None, ... # (None, None,... # ... # 三、保存文件 wb.save("F:\myxls.xlsx") # 可以使用tempfile模块保存为流 # 四,从文件加载 # # 下面两个方法都可以吗? # wb = openpyxl.load_workbook('F:\example.xlsx', read_only=True) # # wb = openpyxl.open('F:\example.xlsx') 等价于上面,指向同一个方法。 # print(wb.sheetnames) # 返回一个list # ws = wb['sheetName'] #


浙公网安备 33010602011771号