常用模块之openpyxl模块
openpyxl模块
openpyxl模块是一个常用的来操作Excel表格的模块,下面是自己看官方文档学习的对Excel的一些简单操作。
简单的使用
创建工作簿
1 # 创建工作簿 2 3 from openpyxl import Workbook 4 from openpyxl import utils 5 6 7 # 创建一个工作簿 8 wb = Workbook() 9 10 filename = 'test.xlsx' 11 12 ws1 = wb.active # 获取当前选中的sheet 13 print(ws1) # out: <Worksheet "Sheet"> 14 ws1.title = 'range names' # 更改当前sheet的名字 15 print(ws1) # out: <Worksheet "range names"> 16 17 for row in range(1, 10): 18 ws1.append(range(10)) # 添加0-9个数 19 20 ws2 = wb.create_sheet(title='Pi', index=0) # title是sheet名称,index是插入的sheet表的位置 21 22 ws2['A3'] = 3.1415 # 在A3单元格写入Pi值 23 24 ws3 = wb.create_sheet(title='Data') # 创建Data sheet表单 25 26 for row in range(5, 10): 27 for col in range(20, 30): # 在这些单元格内写入其列的名称,列基本是A-Z, AA-AZ, ... 28 ws3.cell(row=row, 29 column=col, 30 value='{}'.format(utils.get_column_letter(col))) 31 32 print(ws3['AA8'].value) # 获取AA列8行的数据 out: AA 33 34 wb.save(filename=filename) # 保存以上数据到Excel文件
读入一个已存在的Excel文件
1 # 创建工作簿 2 3 from openpyxl import load_workbook 4 from openpyxl.workbook import workbook 5 6 # 加载一个已存在的工作簿 7 wb = load_workbook(filename='test.xlsx') 8 9 # 循环打印工作表的名称 10 for sheet_name in wb.sheetnames: 11 print(sheet_name) 12 s = wb.get_sheet_by_name('Pi') # type: workbook.Worksheet 13 14 sheet_ranges = wb['range names'] # 直接获取range name的工作表 15 16 print(sheet_ranges['D8'].value) # 获取D8单元格的数值
使用简单数字
import datetime from openpyxl.cell import cell from openpyxl import Workbook # 创建一个工作簿 wb = Workbook() filename = 'num_test.xlsx' ws = wb.active # 获取当前激活选中的工作表 ws['A1'] = datetime.datetime(2000, 1, 1) print(ws, ws['A1'], type(ws['A1'])) w = ws['A1'] # type: cell.Cell print(w.row, w.column, w.column_letter) # 打印单元格的行列标号及列对应的字母 print(ws['A1'].number_format) # 打印单元格的格式 wb.save(filename=filename) # 保存以上数据到Excel文件
使用公式
from openpyxl import Workbook # 创建一个工作簿 wb = Workbook() filename = 'formulae_test.xlsx' ws = wb.active # 获取当前激活选中的工作表 ws['A1'] = '=sum(3, 4)' print(ws['A1'].value) wb.save(filename=filename) # 保存以上数据到Excel文件
合并单元格
from openpyxl import Workbook # 创建一个工作簿 wb = Workbook() filename = 'merge_test.xlsx' ws = wb.active # 获取当前激活选中的工作表 ws['A1'] = 3 ws['B2'] = 8 ws.merge_cells('A1:C3') # 合并后只能保留左上角的值 # ws.unmerge_cells('A1:C3') # 取消单元格的合并 # 与上面的方法类似从第4行第2列的左上角到右下角6行4列的单元格合并 ws.merge_cells(start_row=4, start_column=2, end_row=6, end_column=4) # ws.unmerge_cells(start_row=4, start_column=2, end_row=6, end_column=4) # ws['A2'] = 5 # 合并后不能修改值了,只能访问 print(ws['A1'].value) # out: 3 只能访问左上角的单元格了 print(ws['C3'].value) # out: None wb.save(filename=filename) # 保存以上数据到Excel文件
参考:

浙公网安备 33010602011771号