Python操作 Excel 基础操作

Python操作 Excel

安装

读取 Excel pip install xlrd read

写入Excel pip install xlwt write

补充会用到的excel表

在这里插入图片描述

读取 Excel

import xlrd

myexcel = xlrd.open_workbook('files/test.xlsx')
mysheetname = myexcel.sheet_names()
print(mysheetname)

获取 sheet

一个Excel可以有多个 sheet

  1. sheet_names(): 获取所有sheet的名字
  2. sheet_by_index:根据所在的下标获取sheet 张三 李四 王五 张三排在第一位 因为下标从0开始 所以张三的下标是0
  3. sheet_by_name:根据名字获取sheet
  4. sheets:获取一个Excel文件中所有的sheet表格
  5. nrows: 获取表格的行数
  6. ncols:获取表格的列数
import xlrd

mvexcel = xlrd.open_workbook('file/a工作表.xlsx')

mysheetname1 = mvexcel.sheet_names()  # 获取所有的名称
print(mysheetname1)

mysheetname2 = mvexcel.sheet_by_index(2)  # 返回的是一个整体   将下标为2的表格整体命为mysheetname2  (下标起始为0)就是说现在在python中mysheetname2就代表下标为2的表格
print(mysheetname2.name)   #打印这个表格的名字

mysheetname3 = mvexcel.sheet_by_name('abc')  # 返回的是一个整体   将名字为'abc' 的表格整体命为mysheetname3   也就是说现在在python中mysheetname3就代表表格名字为'abc'的表格
print(mysheetname3)

mysheet = mvexcel.sheets()  
for i in mysheet:    # 遍历#挨个把表格从列表 (可以理解挨个为从箱子里边拿出酒)
    print(i.name)    # 打印该sheet的名字

sheet0 = mvexcel.sheet_by_index(0)
print("行数:%s" % sheet0.nrows)   # 求总行数
print("列数:%s" % sheet0.ncols)   # 求总列数



Cell 相关操作

先获取 sheet 表格 然后再获取其中的单元格

  1. sheet.cell(row,col): 获取指定行 row 和 列 col的 cell对象
  2. sheet.row_slice(row,start_col,end_col):指定 行的 某几列的 cell对象
  3. sheet.col_slice(col,start_row,end_row):获取指定列的 某几行cell对象
  4. sheet.cell_value(row,col):获取指定行和列的值
  5. sheet.row_values(row,start_col,end_col):获取指定行的某几列的值
  6. sheet.col_values(col,start_row,end_row):获取指定列的某几行的值
import xlrd

#打开excel 文件
workbook = xlrd.open_workbook('files/成绩表.xlsx')

#获取目标sheet对象
sheet = workbook.sheet_by_index(0)

#获取cell相关内容
# cell = sheet.cell(0,0) # 下标从0开始   也就是第一行 第一列
# print(cell)
# cell1 = sheet.row_slice(1,1,3) #包含 第1 不包含 第3
# print(cell1)[number:78.0, number:99.0]
# for x in cell1:
#     print(x.value)
# print(sum([x.value for x in cell1]))

# cell2 = sheet.col_slice(1,1,3) #包含 第1 不包含 第3
# print(cell2)
# for x in cell2:
#     print(x.value)
# print(len(cell2))
# print(sum([x.value for x in cell2])/len(cell2))

# print(sheet.cell_value(2,2)) #第三行 第三列 单元格的值


# print(sheet.row_values(3,1,3)) #第四行的第二列到第三列的值  (因为下标从开始)  # 这里括号里的值代表下标为3的行,包含下标为1的列,但不包含下标为3的列  所以是第四行的第二列到第三列的值

print(sheet.nrows) #输出为19  
print(sheet.col_values(1,1,sheet.nrows))#运行结果为[78.0, 98.0, 94.0, 90.0, 95.0, 99.0, 96.0, 96.0, 93.0, 90.0, 95.0, 96.0, 92.0, 90.0, 96.0, 98.0, 92.0, 99.0] # 具体格式参考上面总结

scores = sheet.col_values(1,1,sheet.nrows)
result = sum(scores)/len(scores)
print(result)

ps:

​ cell.value:这个单元格中的值

cell.ctype:这个单元格的数据类型

print(sheet.cell(0,1).ctype)  # 输出为:1   姓名    文本
print(sheet.cell(2,2).ctype)  #输出为: 2  100    数字 

Cell数据类型

  1. xlrd.XL_CELL_TEXT 文本类型
  2. xlrd.XL_CELL_NUMBER 数值类型
  3. xlrd.XL_CELL_DATE 日期类型
  4. xlrd.XL_CELL_BOOLEAN 布尔类型
  5. xlrd.XL_CELL_BLANK 空白类型

写入Excel

  1. 导入xlwt模块
  2. 创建一个workbook对象
  3. 创建一个sheet对象
  4. 使用sheet.write(行,列,数据) 方法写入到sheet下指定的行和列中 如果想要添加新的单元格 那么就用put_cell()
  5. 保存成Excel文件

编辑Excel

import xlrd
import xlwt

rwb = xlrd.open_workbook('file/成绩表.xlsx')
mysheet = rwb.sheet_by_index(0)
# 添加总分单元格
mysheet.put_cell(0,4,xlrd.XL_CELL_TEXT,'总分',None)
for x in range(1,mysheet.nrows):
    score = mysheet.row_values(x,1,4)
    mysheet.put_cell(x,4,xlrd.XL_CELL_NUMBER,sum(score),None)
# 添加平均分单元格
mysheet.put_cell(19,0,xlrd.XL_CELL_TEXT,'平均分',None)
for y in range(1,mysheet.ncols):
    score = mysheet.col_values(y,1,19)
    mysheet.put_cell(19,y,xlrd.XL_CELL_NUMBER,sum(score)/len(score),None)



wwb = xlwt.Workbook(encoding='utf-8')
new_sheet = wwb.add_sheet('1班')
for row in range(mysheet.nrows):
    for col in range(mysheet.ncols):
        value = mysheet.cell_value(row,col)
        print(value)
        new_sheet.write(row,col,value)
wwb.save('file/新成绩表.xls')

在这里插入图片描述

创建一个新的excel

# 导入 xlwt
import xlwt
import random


# 创建对象
workbook = xlwt.Workbook(encoding='utf-8')

# 创建一个对象,新建一个excel表 表的名字叫学生成绩表
sheet = workbook.add_sheet('学生成绩表')

# 添加表头
sheet.write(0,0,'姓名')
sheet.write(0,1,'语文')
sheet.write(0,2,'数学')
sheet.write(0,3,'英语')
# 添加随机数进去
for y in range(1,11):
    for x in range(4):
        sheet.write(y,x,random.randint(60,100))

# 保存成Excel文件(这里是xls 不是xlsx)
workbook.save('file/scores.xls')

在这里插入图片描述

  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值