需要安装openpyxl模块
1 获取execl文件中所有的工作表的sheet表名
import openpyxl
wb = openpyxl.load_workbook(file)
print (wb.active) #当前活动的工作表,当前工作的
mysheet1=wb['Sheet1'] #获取某张工作表
print (list(mysheet1.values)) #mysheet1.values 生成器,以列表list的形式,获取到Sheet1所有的数据
celldata1=mysheet1.cell[1,2].value #读取sheet中(第1行,第2列)的数据
# 获取workbook中所有的表格
sheets = wb.sheetnames
print (sheets) #结果 ['Sheet1', 'Sheet2', 'Sheet3']
# 循环遍历所有sheet
for i in range(len(sheets)):
mysheet = wb[sheets[i]]
print (mysheet.max_row) #行数
print (mysheet.max_column) #列数
print (mysheet.cell(1,2).value #读取sheet1表中的第1行,第2列的数据
print (mysheet)
#结果:<Worksheet "Sheet1">
<Worksheet "Sheet2">
<Worksheet "Sheet3">
print('第' + str(i + 1) + '个sheet Name: ' + sheet.title)
运行结果:
第1个sheet Name: Sheet1
第2个sheet Name: Sheet2
第3个sheet Name: Sheet3
按行读取工作表的数据:
mysheet1=wb['Sheet1']
max_r=mysheet.max_row #最大的行数
max_c=mysheet.max_column #最大的列数
for row in sheet.iter_rows(min_row=1, min_col=1, max_col=max_c, max_row=max_r):
print (row)):
# 读取标题行
for row in sheet.iter_rows(max_row=1):
title_row = [cell.value for cell in row]
print(title_row)
# 读取标题行以外数据
for row in sheet.iter_rows(min_row=2):
row_data = [cell.value for cell in row]
print(row_data)
2 写入数据到新的execl里:
将data数据写入至execl表格中:
from openpyxl import Workbook
wb = Workbook()
sheet = wb.active
data = ((11, 48, 50),(81, 30, 82),(20, 51, 72),(21, 14, 60),(28, 41, 49),(74, 65, 53),("Peter", 'Andrew',45.63))
for i in data:
sheet.append(i)
wb.save('appending_values.xlsx')
将原x.xlsx表里的数据重新写入至新的new.xlsx表格中
from openpyxl import Workbook
new_wb=Workbook()
new_sheet=new_wb.active
for row in sheet.iter_rows(min_row=1): #获取原表里的所有的数据
row_data = [cell.value for cell in row]
#print(row_data)
new_sheet.append(row_data)
new_wb.save('new.xlsx')
遍历execl中的多个sheet表数据:
import xlrd
import openpyxl
#mport pyexcel
from xlrd import open_workbook
#file='C:/Users/50774/Desktop/pyscript//x.xlsx'
file="x.xlsx"
print (file)
book=xlrd.open_workbook(file)
sname=openpyxl.load_workbook(file).sheetnames
#print (sname)
wb = openpyxl.load_workbook(file)
# 获取workbook中所有的表格
sheets = wb.sheetnames
print (sheets)
for i in range(len(sheets)):
print("*********************")
mysheet = wb[sheets[i]]
print (mysheet.max_row) #行数
print (mysheet.max_column) #列数
data = []
for r in range(1,mysheet.max_row+1):
ln = []
for c in range(1,mysheet.max_column+1):
celldata=mysheet.cell(r,c).value
#print (celldata)
ln.append(celldata)
#print (ln)
data.append(ln)
print (data)
原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/276733.html