编程语言
首页 > 编程语言> > python openpyxl读取execl

python openpyxl读取execl

作者:互联网

需要安装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)

 

标签:execl,mysheet,wb,sheet,openpyxl,python,max,print,row
来源: https://www.cnblogs.com/skyzy/p/16515439.html