import xlrd
# 读取文件
data = xlrd.open_workbook('excelFile.xls')
# 通过索引顺序获取
table = data.sheets()[0]
# 通过索引顺序获取
table = data.sheet_by_index(0)
# 通过名称获取
table = data.sheet_by_name(u'Sheet1')
# 获取整行的值(数组)
table.row_values(行号)
# 获取整列的值(数组)
table.col_values(列号)
# 获取行数
nrows = table.nrows
# 获取列数
ncols = table.ncols
# 循环行列表数据
for i in range(0,nrows):
#从第一行开始至结尾,修改数字可以改变起始行
print(table.row_values(i))
# 根据指定的行与列获取单元格的值
cell_A1 = table.cell(0, 0).value
cell_C4 = table.cell(2, 3).value #第三行--第二列的值
cell_D2 = table.cell(-1, 3).value #最后一行--第二列的值
# 左为行号,右为列号,从0开始计算,即0为第一行(列)
# 根据行列索引获取单元格的值
cell_A1 = table.row(0)[0].value
cell_A2 = table.col(1)[0].value
# 查看该模块共有多少条数据
string = driver.find_element_by_xpath('/html/body/div[1]/div/div[3]/div[1]').text
#string = '显示1到10,共2655记录'
nums = re.findall('\d+\.?',string) #正则获取string的数字
num = nums[2] #2655
NUM = int(num) #转换成int类型
print("共有数据%s条" % NUM)
# 写入数据table.write(行,列,value)
table.write(0,0,'test')
#导出全部数据
driver.find_element_by_xpath('//*[@id="searchBox"]/ul[1]/li[2]/a').click() # 导出全部
time.sleep(3)
excelpath = r'C:\Users\Ymd\Downloads\部门用车分析表.xls' #文件全路径
tableopen = xlrd.open_workbook(excelpath) #打开excel
table = tableopen.sheet_by_name('Sheet1') #进入Sheet1表
h = table.nrows #行
print("表数据的行数为:%s" % h)
1、创建并写入
# -*- coding: utf-8 -*-
#创建一个excel 文件,并写入不同类的内容
from openpyxl import Workbook
wb = Workbook() #创建文件对象
ws = wb.active #获取第一个sheet
ws['A1'] = 42 #写入数字
ws['B1'] = "你好"+"automation test" #写入中文(unicode中文也可)
ws.append([1, 2, 3]) #写入多个单元格
import datetime
import time
ws['A2'] = datetime.datetime.now() #写入一个当前时间
#写入一个自定义的时间格式
ws['A3'] =time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
# Save the file
wb.save("e:\\sample.xlsx")
2、实例操作
# coding:utf-8
import openpyxl
#导出模板并写入内容
driver.find_element_by_xpath('//*[@id="salarypayForm"]/table/tbody[1]/tr[7]/td[2]/span[2]/a').click() # 点击下载模板
time.sleep(2)
workbook = openpyxl.load_workbook(r'C:\Users\Ymd\Downloads\工资统计表.xlsx') #打开下载的Excel
sheet = workbook['Sheet1'] # 进入Excel第一个表
h = sheet.max_row # 行数
l = sheet.max_column # 列数
# 写入实际内容(第二行)
print("系统即将执行Excel写入...")
sheet['A2'] = '**'
sheet['C2'] = '41*******211305560'
sheet['D2'] = '东北大区'
sheet['E2'] = '大庆项目'
sheet['F2'] = '软件测试'
sheet['G2'] = '软件测试工程师'
sheet['H2'] = '试用期'
sheet['I2'] = '初级'
sheet['J2'] = '初级'
sheet['K2'] = '2018-09'
sheet['L2'] = '*200'
sheet['V2'] = '*500'
sheet['AD2'] = '*500'
sheet['AE2'] = '*100'
sheet['AG2'] = '48********41641'
sheet['AH2'] = '**银行'
sheet['AI2'] = '*11'
sheet['AJ2'] = '**'
sheet['AK2'] = '普通员工'
workbook.save(r'C:\Users\Ymd\Downloads\工资统计表.xlsx') # 保存
3、单元格类型
# -*- coding: utf-8 -*-
from openpyxl import Workbook
from openpyxl import load_workbook
import datetime
wb = load_workbook('e:\\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["A4"].number_format)
ws["A4"]= "中国"
print (ws["A5"].number_format)
wb.save("e:\\sample.xlsx")
'''
执行结果:
yyyy-mm-dd h:mm:ss
0%
General
General
如果是常规,显示general,如果是数字,显示'0.00_ ',如果是百分数显示0%
数字需要在Excel中设置数字类型,直接写入的数字是常规类型
'''
4、操作单元格
# -*- coding: utf-8 -*-
from openpyxl import Workbook
wb = Workbook() # 得到一个全新的workbook
ws1 = wb.create_sheet("Mysheet") #创建一个sheet
ws1["A1"]=123.11
ws1["B2"]="你好"
d = ws1.cell(row=4, column=2, value=10) # 第4行、第2列、10
print (ws1["A1"].value)
print (ws1["B2"].value)
print (d.value)
wb.save("e:\\sample.xlsx")
5、批量操作单元格
# -*- coding: utf-8 -*-
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"]: #遍历A列单元格
print (cell.value)
#操作多列,获取每一个值
print (ws1["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):
#按行遍历指定范围内的所有单元格
for cell in row:
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)
wb.save("e:\\sample.xlsx")
6、获取所有的行对象
#coding=utf-8
from openpyxl import Workbook
from openpyxl import load_workbook
wb = load_workbook('e:\\sample.xlsx')
ws = wb.active #激活工作表
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[-1]
print (rows[len(rows)-1][len(rows[0])-1]) #获取第后一行和最后一列的单元格对象
print (rows[len(rows)-1][len(rows[0])-1].value) #获取第后一行和最后一列的单元格对象的值
7、获取所有的列对象
#coding=utf-8
from openpyxl import Workbook
from openpyxl import load_workbook
wb = load_workbook('e:\\sample.xlsx')
ws=wb.active
cols=[]
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) #获取最后一列的最后一行的单元格对象的值
8、复制sheet
# -*- coding: utf-8 -*-
from openpyxl import Workbook
wb = Workbook()
ws1 = wb.create_sheet("Mysheet") #创建一个sheet
ws1.title = "New Title" #设定一个sheet的名字
ws2 = wb.create_sheet("Mysheet", 0) #设定sheet的插入位置 默认插在后面
ws2.title = u"你好" #设定一个sheet的名字 必须是Unicode
ws1.sheet_properties.tabColor = "1072BA" #设定sheet的标签的背景颜色
ws2.sheet_properties.tabColor = "1072BA"
'''
#获取某个sheet对象
print (wb.get_sheet_by_name(u"你好"))
print (wb["New Title" ])
#获取全部sheet 的名字,遍历sheet名字
print (wb.sheetnames)
for sheet_name in wb.sheetnames:
print (sheet_name)
print ("*"*50)
for sheet in wb:
print (sheet.title)
'''
#复制一个sheet
wb["New Title" ]["A1"]="zeke"
source = wb["New Title"]
target = wb.copy_worksheet(source) #由此得到一个复制过来的sheet
ws3 = wb.copy_worksheet(wb['New Title'])
ws3.title = 'new2'
wb.copy_worksheet(wb['New Title']).title = 'hello' # 又复制一个
wb.save("e:\\sample.xlsx")