常用模块之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文件

 

参考:

官方文档

posted @ 2019-07-19 20:22  yscl  阅读(147)  评论(0)    收藏  举报