python openpyxl 操作 excel ==> 简单读取(持续完善...)
2017-11-24 11:13
826 查看
python openpyxl 操作 excel
时间比较仓促, 所以整理的比较不全面, 以后会推出我经常用的一些方法,主要是对里面的数据进行操作, 对单元格操作的并不是很多, 以后会完善……
==================读取===================1.精准读取
1.1 按照单元格的表示读取 例如 A1
from openpyxl import load_workbook #你需要打开文件的路径 wb = load_workbook(r'C:\Users\hcf\Desktop\a.xlsx') # 你打开文件之后显示的sheet页, (当然你也可以根据wb.get_sheet_by_name('sheet页名称')获取 #或者 wb.get_sheet_names() 然后遍历获取, 以后介绍) ws = wb.active aa = ws['A1'].value print(aa)
1.2 按照单元格坐标获取 (row=1, column=1)
from openpyxl import load_workbook wb = load_workbook(r'C:\Users\hcf\Desktop\a.xlsx') ws = wb.active aa = ws.cell(row=1,column=1).value print(aa)
1.3 公式操作:
from openpyxl import load_workbook #你需要打开文件的路径 wb = load_workbook(r'C:\Users\hcf\Desktop\a.xlsx') # 你打开文件之后显示的sheet页, (当然你也可以根据wb.get_sheet_by_name('sheet页名称')获取 #或者 wb.get_sheet_names() 然后遍历获取, 以后介绍) ws = wb.active ws['A1'] = '=B1&C1&D1' print(aa)
2.大范围读取
2.1 全部行的遍历获取
from openpyxl import load_workbook wb = load_workbook(r'C:\Users\hcf\Desktop\a.xlsx') ws = wb.active #从第一行获取 for row in ws.rows: for col in row: print(col.value)
2.2指定行的便利获取
from openpyxl import load_workbook wb = load_workbook(r'C:\Users\hcf\Desktop\a.xlsx') ws = wb.active #注意这里虽然也是从第一行获取, 但是转换成list 之后, 不要忘记集合的下标是从0开始的 for row in list(ws.rows)[0:1]: for col in row: print(col.value)
根据一个简单的实例详细介绍
改程序做的是一个简单的拼合功能, 将省市县拼接成一段详细的地址, 将经纬度拼接成一个完整的经纬度
程序的入口在最下面的 if name == ‘main‘:
from openpyxl import load_workbook from sys import argv import os # 该命令是在外部调用的时候接收参数使用的 file1 = argv[1] # file1 = r"D:\proj\code\2to3\test\input\input_2.xlsx" file2 = argv[2] # file2 = r"D:\proj\code\2to3\test\output_2.xlsx" def joint_address_lat_long(input_file, name): # 打开input文件 file = load_workbook(input_file) # 获取第一个sheet页 sheet_names = file.get_sheet_names() table = file.get_sheet_by_name(sheet_names[0]) # 因为range()方法是左闭右开的方法, 所以需要在最大行上加1, 才会遍历全部的行数, 虽然里面的3 在其他的集合中读取的是第4个值, 但是在操作excel中, 坐标是从1 开始的.这一点要谨记...... for col in range(3, table.max_row + 1): # 这是很简单的公式拼合方式 table['X' + str(col)] = '=U' + str(col) + '&V' + str(col) + '&W' + str(col) table['AE' + str(col)] = '=Y' + str(col) + '+Z' + str(col) + '/60+AA' + str(col) + '/3600' table['AF' + str(col)] = '=AB' + str(col) + '+AC' + str(col) + '/60+AD' + str(col) + '/3600' if os.path.isdir(file2): print('......开始存储文件......') output_file = os.path.join(file2, name) file.save(output_file) print('......文件存储成功......') else: file.save(file2) print('......执行完毕......') def check_path(): # 判断 file1 是不是一个目录文件 if os.path.isdir(file1): # 遍历这个目录文件 for root, dirs, files in os.walk(file1): for name in files: # 建议不要使用(root +'/'+name)这种路径拼合方式, openpyxl 提供了路径拼合的方法 input_file = os.path.join(root, name) if (not input_file.startswith('~$')) and input_file.endswith('.xlsx'): joint_address_lat_long(input_file, name.replace('input', 'output')) else: joint_address_lat_long(file1) if 4000 __name__ == "__main__": check_path()
可能很多接触不多的小伙伴, 看到上面的代码会很头疼, 后面我会介绍一些具体的方法, 其实细细的理解不是很难
打开文件 : wb = load_workbook(r’C:\Users\hcf\Desktop\a.xlsx’)
获取文件中的sheet : ws = wb.active(获取打开文件显示的sheet页)
sheet_name = wb.get_sheet_names() # 得到的是这个文件所有的sheet名称, 需要自己去遍历
ws = wb.get_sheet_by_name(sheet_name) # 根据sheet 名称获取sheet 对象
获取最大行 : row_num = sheet.max_row
获取最大列 : col_num = sheet.max_column
其实还有一个很简单的方法 , 当你拿到了 sheet 对象的时候, 可以 help(sheet) 运行脚本, sheet 所具有的所有的方法都会打印到控制台上
获取所有的行对象
sheet.rows
可以进行遍历(最上面有使用这个方法)
for row in ws.rows: for col in row: print(col.value)
给单元格设置底色
from openpyxl import load_workbook from openpyxl.styles import PatternFill from openpyxl import Workbook # wb = Workbook() wb = load_workbook(r'C:\Users\hcf\Desktop\a.xlsx') redFill = PatternFill(start_color='00FF00', end_color='00FF00', fill_type='solid') ws = wb.active ws.cell(row=1, column=1).fill = redFill wb.save(r'C:\Users\hcf\Desktop\a.xlsx')
===============写入================
其实上面也有写入的部分, 但是有一点很重要, 写入的时候必须要保存的, 否则是不会生效的, 理由就不用说了吧
===============新建================
from openpyxl import Workbook wb = Workbook() # 这就相当于创建了一个新的excel, # 可以进行所有通过load_workbook()打开的excel 同样的方法, 上面的代码有这个方法的注释 # 最后保存的时候 wb.save('详细路径文件名也需要定义')
以后的更新会根据实际的例子来进行……
相关文章推荐
- Python office编程:利用xlrd模块读取并简单操作Excel文档
- python用openpyxl操作excel
- Python 连接db2 以及读取Excel 操作
- Python 搞搞数据库 简单的SQLite操作前 之读取文档 readlines
- python操作Excel的库openpyxl
- python操作redis简单例子<转>
- Python利用系统命令获取文件(夹)信息以及Python对Excel的简单操作
- python_openpyxl_操作excel
- python操作excel的包(openpyxl、xlsxwriter)
- python 读取文件 并实现文件相关操作最后导出excel
- python用openpyxl操作excel
- JXL介绍 Java操作Excel--读取Excel(简单步骤,适合初学者)
- python读取excel,操作数据库
- python 操作excel工具包openpyxl
- python操作excel之读取数据——xlrd
- Python操作excel的几种方式--xlrd、xlwt、openpyxl
- python操作(读取)excel
- python openpyxl 操作 excel
- 【python】pandas库pd.read_excel操作读取excel文件参数整理与实例
- Python3 操作Excel--openpyxl