赞
踩
- '''新建'''
- from openpyxl import Workbook
- wb = Workbook() # 新建的工作簿
- ws = wb.active # 在wb下新建的工作表
-
- '''读取工作簿和工作表'''
- from openpyxl import load_workbook
- wb = load_workbook(r'D:\python_files\history\daily\blog\excel_demo.xlsx') # 工作簿
- ws = wb['Sheet1'] # 要操作的工作表 <Worksheet "Sheet1">
- ws1 = wb['Sheet2'] # 可以读取不同的工作表
- '''读取数据'''
- ws_max_row = ws.max_row # 查看有多少行
- ws_max_col = ws.max_column # 查看有多少列
-
- # 读取第2列年份
- year = []
- for row in range(2,ws_max_row+1):
- ws.cell(row,2).value # 第row行第2列的单元格值
- year.append(ws.cell(row,2).value) # [2020, 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011]
-
- # 读取整个表
- all_data = []
- for row in range(1,ws_max_row+1):
- row_data =[] # 存取每一行的信息 eg['中国工商银行', 2011, 213314636.11587694, 232114814.48467818, 65358020.34194424]
- for col in range(1,ws.max_column+1):
- row_data.append(ws.cell(row,col).value ) # 第row行第col列的单元格值
- all_data.append(row_data) # 把每一行的row_data添加到all_data中
看一下读取的信息all_data是什么样的:
- for a in all_data:
- print(a) # 查看所有信息
可以看到all_data是一个二维列表,它有11个元素存储每一行,每个元素又是有5个元素的列表,存储每一行的具体信息。
写入前:
- # 在A1单元格写入
- ws.cell(1,1).value = 'new_value'
-
- # 循环写入一行数据
- last_row_data = all_data[-1] # ['中国工商银行', 2011, 213314636.11587694, 232114814.48467818, 65358020.34194424]
- for c in range(len(last_row_data)):
- ws.cell(13,c+1).value = last_row_data[c] # 循环在第13行写入一行数据
- wb.save(r'D:\python_files\history\daily\blog\excel_demo.xlsx') # 保存
写入后:
可以看到把A1单元格信息改写,且在13行加了一行信息(写入的内容是刚刚读取的最后一行-11行的信息)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。