用python读写编辑Excel表

读取Excel表格

首先是导入一个Excel表格到文件夹下,和代码文件在一个目录下(不是也行)路径到时候需要绝对路径

新建一个py文件后,首先导入xlrd库,这个就是Excel的read功能

import xlrd

然后是调用xlrd打开成绩表.xlsx

workbook = xlrd.open_workbook('成绩表.xlsx')

然后获取第一个工作表,在这里说两种方式

# Class1 = workbook.sheet_by_name('1班')  #name就是表面意思,是工作表的名称
CLass1 = workbook.sheet_by_index(0)  #sheet_by_index()是索引第几个工作表,0在这里是代表第一,在程序中,0才是起点
# print(workbook.sheets()) #获取所有Excel中的表格
# for x in workbook.sheets(): #遍历所有的表格
#     print(x.name) #依次输出这些表格的name

#输出行列的长度
# print('行数:',Class1.nrows)
# print('列数:',Class1.ncols)
#
#
# # num = int(Class1.cell(2,2)) #这种强制类型转换行不通
# num = Class1.cell(2,2)
# print(num)

print(Class1.row_slice(1,1,3)) #输出从表格中第2行开始,从第2列开始,到第4列结束(row_slice是列)



print(Class1.col_slice(1,1,Class1.nrows))
for x in Class1.col_slice(1,1,Class1.nrows):#同上col_slice代表是行
    print(x.value) #遍历输出x的value(值)

Excel数据求和等

import xlrd #导入xlrd库

workbook = xlrd.open_workbook('成绩表.xlsx')         #打开Excel表格,赋给‘workbook’
class1 = workbook.sheet_by_name('1班')      #打开表格name为

#李思聪的总成绩和平均成绩
# lisicong = class1.row_slice(1,1,class1.ncols)          #获取李思聪的三门课程的成绩
# print(lisicong)     #形式为[number:78.0, number:99.0, number:96.0]
# res = []            #创建一个集合,准备放置去除数据类型的数值数据
# for x in lisicong:  #x遍历三门课程成绩
#     res.append(x.value)    #添加x.value(此时x为纯数值数据)到res集合中,如将number:78.0变成78.0
#
# print(res)          #输出res集合
# print(sum(res))     #输出res集合的和
# print(len(res))     #输出res集合中数据的个数
# avg = sum(res)/len(res)    #将平均数赋值给avg
# print(avg)          #输出avg,指平均数



##########以下同上区别在于取数据变成列
total = class1.col_slice(1,1,class1.nrows)     #取第2列,从第2行开始,到class1.nrows(为第2列一共的行数)行结束
yuwen = []
for y in total:
    yuwen.append(y.value)

print(yuwen)
print('语文的总成绩:',sum(yuwen))
avg1= sum(yuwen)/len(yuwen)
print('语文的平均成绩:',avg1)



##########同上
total1 = class1.col_slice(2,1,class1.nrows)
math= []
for y in total1:
    math.append(y.value)

print(math)
print('数学的总成绩:',sum(math))
avg2= sum(math)/len(math)
print('数学的平均成绩:',avg2)


#钱多多专场
qian = class1.row_values(11,1,class1.ncols)
print('钱多多的平均成绩:',sum(qian)/len(qian))
print('钱多多的总成绩:',sum(qian))


strs = class1.cell(15,2)
print(strs.ctype)
print(xlrd.XL_CELL_TEXT)

Excel写入

import xlwt
from random import randint
workbook = xlwt.Workbook(encoding='utf-8')

sheet = workbook.add_sheet('随机成绩')

sheet.write(0,0,'语文')
sheet.write(0,1,'数学')
sheet.write(0,2,'英语')

for x in range(1,21):
    for y in range(0,3):
        sheet.write(x,y,randint(0,150))

workbook.save('新建成绩表.xls')

读取数据到新表中,编辑新东西到表格中

import xlrd
import xlwt

workbook1 = xlrd.open_workbook('成绩表.xlsx')   #打开成绩表.xlsx,赋给对象workbook1

sheet1 = workbook1.sheet_by_index(0)    #打开索引0(第一个)表,赋给sheet1

sheet1.put_cell(0,sheet1.ncols,xlrd.XL_CELL_TEXT,'总分',None)  #sheet.1.ncols是列数
# print(sheet1.cell(0,4))
nrows = sheet1.nrows #因为你写入了新的内容 行数可能发生变化  提前获取原来的行数

for a in range(1,sheet1.nrows):     #a遍历1到19,sheet1.nrows是行数
    sorses = sheet1.row_values(a,1,4)    #获取这a行,1到4不包含4的数据
    sheet1.put_cell(a,4,xlrd.XL_CELL_NUMBER,sum(sorses),None)   #在a行,第4列写入类型为numbe的sum(sorses)(求和)

# print(sheet1.cell(2,4))
for b in range(1,4):
    sorses1 = sheet1.col_values(b,1,nrows)
    avg = sum(sorses1)/len(sorses1)
    sheet1.put_cell(nrows,b,xlrd.XL_CELL_NUMBER,avg,None)

print(sheet1.cell(19,1))

# for b in range(1,sheet1.ncols)
# workbook2 = xlwt.Workbook(encoding='utf-8')
# sheet2 = workbook2.add_sheet('读取表')
#
# for x in range(sheet1.nrows):
#     for y in range(sheet1.ncols):
#         value = sheet1.cell_value(x,y)
#         sheet2.write(x,y,value)
#
# workbook2.save('读取.xls')
上一篇:.net Excel导出


下一篇:python接口自动化,通过表单形式请求接口