EXCEL操作大全
Posted su-sir
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EXCEL操作大全相关的知识,希望对你有一定的参考价值。
一、安装第三方包
pip install openpyxl==2.5.4 (注意版本号)
二、代码实现
1)创建一个excel文件,并写入内容
from openpyxl import Workbook import datetime import time import locale wb = Workbook() # 创建文件对象-->在内存中新建了一个excel文件(还没有写到磁盘),如果这个文件存在,那么会把文件内容清空 ws = wb.active # 获取第一个sheet ws[‘A1‘] = 42 # 写入数字 ws[‘B1‘] = "测试"+"automation test" # 写入中文 ws.append([1, 2, 3]) # 写入多个单元格,追加一行写列表内容 ws[‘A3‘] = datetime.datetime.now() # 写入一个当前时间 # 写入一个自定义的时间格式 locale.setlocale(locale.LC_ALL,‘en‘) # 英文格式 locale.setlocale(locale.LC_CTYPE, ‘chinese‘) # 中文格式 ws[‘A4‘] = time.strftime("%Y年%m月%d日 %H时%M分%S秒", time.localtime()) wb.save("D:\test.xlsx") # 保存文件,保存到硬盘
2)创建sheet
from openpyxl import Workbook wb = Workbook() ws = wb.create_sheet("Mysheet1") # 创建一个sheet,名字叫:Mysheet1 ws1 = wb.create_sheet("Mysheet") # 创建一个sheet,名字叫:Mysheet ws1.title = "New Title" # 设定一个sheet的名字:把ws1的名字改为New Title ws2 = wb.create_sheet("Mysheet", 0) # 设定一个sheet的插入位置是0,表示创建一个名字为Mysheet,放在第一个位置 ws2.title = u"测试" # 设定一个sheet的名字:把ws2的名字改为测试 ws1.sheet_properties.tabColor = "1072BA" # 设定sheet的标签的背景颜色 # 获取某个sheet对象 print(wb["测试"]) print(wb["New Title"]) # 获取全部sheet 的名字,遍历sheet名字 print(wb.sheetnames) for sheet_name in wb.sheetnames: print(sheet_name) print("*"*50) # 遍历获取sheet对象,按照sheet顺序获取 for sheet in wb: print(sheet) for sheet in wb: print(sheet.title) # 复制一个sheet wb["New Title"]["A1"] = "aaaaa" source = wb["New Title"] target = wb.copy_worksheet(source) # 删除某个sheet del wb["New Title"] wb.save("D:\test.xlsx") 结果: <Worksheet "测试"> <Worksheet "New Title"> [‘测试‘, ‘Sheet‘, ‘Mysheet1‘, ‘New Title‘] 测试 Sheet Mysheet1 New Title ************************************************** <Worksheet "测试"> <Worksheet "Sheet"> <Worksheet "Mysheet1"> <Worksheet "New Title"> 测试 Sheet Mysheet1 New Title
3)操作单元格
from openpyxl import Workbook wb = Workbook() ws1 = wb.create_sheet("Mysheet") # 创建一个sheet ws1["A1"] = 123.11 ws1["B2"] = "测试" d = ws1.cell(row=4, column=2, value=10) # 向指定单元格写内容,行号和列号从1开始,row代表行,column代表列 print(ws1["A1"].value) print(ws1["B2"].value) print(d.value) print(ws1.cell(row=4, column=2).value) # 行号和列号从1开始,读取指定单元格的内容 wb.save("D:\a.xlsx") # 保存到硬盘中
4)批量操作单元格
from openpyxl import Workbook wb = Workbook() ws1 = wb.create_sheet("Mysheet") # 创建一个sheet ws1["A1"] = 1 ws1["A2"] = 2 ws1["A3"] = 3 ws1["B1"] = 4 ws1["B2"] = 5 ws1["B3"] = 6 ws1["C1"] = 7 ws1["C2"] = 8 ws1["C3"] = 9 # 操作单列 print(ws1["A"]) for cell in ws1["A"]: print(cell.value) # 操作多列,获取每一个值 print(ws1["A:C"]) # 获取A到C列的对象 for column in ws1["A:C"]: for cell in column: print(cell.value) # 操作多行 row_range = ws1[1:3] # 获取行对象 print(row_range) for row in row_range: for cell in row: print(cell.value) print("*"*50) for row in ws1.iter_rows(min_row=1, min_col=1, max_col=3, max_row=3): # 根据范围来读取数据,iter_rows:表示按行读 for cell in row: print(cell.value) for columns in ws1.iter_cols(min_row=1, min_col=1, max_col=3, max_row=3): # 根据范围来读取数据,iter_cols:表示按列读 for cell in columns: print(cell.value) # 获取所有行 print(ws1.rows) for row in ws1.rows: print(row) print("*"*50) # 获取所有列 print(ws1.columns) for col in ws1.columns: print(col) print(ws1.max_row,ws1.max_column) print(ws1.min_row,ws1.min_column) # 最大行就是横着,最远的那最后个数据的位置为准 # 最大列是竖着:最远的那最后个数据位置为准 wb.save("D:\s.xlsx") # 注意,当为空的时候打印的是None
5)行对象与列对象
from openpyxl import Workbook from openpyxl import load_workbook wb = load_workbook(‘D:\sample.xlsx‘) ws=wb.active # 打开默认的sheet,如果是之前保存的是sheet3,那么这里默认打开的也会是对sheet进行操作 rows = [] for row in ws.iter_rows(): rows.append(row) print(rows) # 所有行 print(rows[0]) # 获取第一行 print(rows[0][0]) # 获取第一行第一列的单元格对象 print(rows[0][0].value) # 获取第一行第一列的单元格对象的值 print(rows[len(rows)-1]) # 获取最后行 print(rows[len(rows)-1][len(rows[0])-1]) # 获取第后一行和最后一列的单元格对象 print(rows[len(rows)-1][len(rows[0])-1].value) # 获取第后一行和最后一列的单元格对象的值 =============================================== from openpyxl import load_workbook wb = load_workbook(‘e:\sample.xlsx‘) ws = wb.active cols = [] for col in ws.iter_cols(): cols.append(col) print(cols) # 所有列 print(cols[0]) # 获取第一列 print(cols[0][0]) # 获取第一列的第一行的单元格对象 print(cols[0][0].value) # 获取第一列的第一行的值 print("*"*30) print(cols[len(cols)-1]) # 获取最后一列 print(cols[len(cols)-1][len(cols[0])-1]) # 获取最后一列的最后一行的单元格对象 print(cols[len(cols)-1][len(cols[0])-1].value) # 获取最后一列的最后一行
6)读取文件内容
from openpyxl import load_workbook wb = load_workbook(‘D:\sample.xlsx‘) # 从现有的文件读取内容,不会删除原有内容(默认是读取上一次保存的sheet) wb.guess_types = False # 如果为False,那么就是12%,如果是True,代表0.12 ws = wb.active # 获取默认的sheet进行操作 print(dir(ws)) ws["D1"] = "12%" print(ws["D1"].value) wb.save("D:\s.xlsx")
7)类型与公式
from openpyxl import load_workbook import datetime wb = load_workbook(‘D:\sample.xlsx‘) ws = wb.active wb.guess_types = True ws["A1"] = datetime.datetime(2010, 7, 21) print(ws["A1"].number_format) # 查看列的类型 ws["A2"] = "12%" print(ws["A2"].number_format) # 查看列的类型 ws["A3"] = 1.1 print(ws["A3"].number_format) # 查看列的类型 ws["A4"] = "中国" print(ws["A4"].number_format) # 查看列的类型 wb.save("D:\sample.xlsx") # 执行结果: # yyyy-mm-dd h:mm:ss # 0% # General # General # 如果是常规,显示general,如果是数字,显示‘0.00_ ‘,如果是百分数显示0% ===================================== from openpyxl import load_workbook wb = load_workbook(‘D:\sample.xlsx‘) ws1=wb.active ws1["A1"] = 1 ws1["A2"] = 2 ws1["A3"] = 3 ws1["A4"] = "=SUM(1, 1)" # 求和 ws1["A5"] = "=SUM(A1:A3)" print(ws1["A4"].value) # 打印的是公式内容,不是公式计算后的值,程序无法取到计算后的值 print(ws1["A5"].value) # 打印的是公式内容,不是公式计算后的值,程序无法取到计算后的值 wb.save("D:\sample.xlsx") # 结果: # =SUM(1, 1) # =SUM(A1:A3)
以上是关于EXCEL操作大全的主要内容,如果未能解决你的问题,请参考以下文章