python笔记4:Python操作 Excel

这篇博客介绍了如何使用Python操作Excel,包括安装xlrd和xlwt库,读取和写入Excel文件,获取sheet,以及单元格的相关操作,如数据类型和值的获取与设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python操作 Excel

安装

读取 Excel : pip install xlrd

写入Excel : pip install xlwt

导入之后才能进行后续操作

读取 Excel

import xlrd

myexcel = xlrd.open_workbook('files/test.xlsx') ## 把图表导入并给与名为myexcle的参数(myexcel在代码中就代表这个表格)
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

myexcel = xlrd.open_workbook('files/test.xlsx')
# mysheetname = myexcel.sheet_names()
# mysheetname = myexcel.sheet_by_index(6) #返回的是一个整体
# mysheetname = myexcel.sheet_by_name('试题模板') #返回的依然是一个整体
# mysheet = myexcel.sheets() #返回所有的表格
# # print(mysheet)
# for x in mysheet: #挨个把表格从列表 (可以理解挨个为从箱子里边拿出酒)
#     print(x.name)  #打印该sheet的名字
# print(mysheetname.name) #打印这个整体的名字

sheet0 = myexcel.sheet_by_index(6)
print("行数:%d" % sheet0.nrows) #test.xlsx 表格1的行数
print("列数:%d" % sheet0.ncols)# test.xlsx 表格1的列数

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)) #第三行的第一列到第三列的值   包含第一列  不包含第三列

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文件
###将一个表格修改并保存为一个新的表格

import xlwt
import xlrd

# 把成绩表导入 rwb对象
rwb = xlrd.open_workbook('成绩表.xlsx')
# 导入成绩表第一页名称
mysheet = rwb.sheet_by_index(0)

mysheet.put_cell(0,4,xlrd.XL_CELL_TEXT,'总分',None)
for row in range(1,mysheet.nrows):
    score = mysheet.row_values(row,1,4)
    mysheet.put_cell(row,4,xlrd.XL_CELL_NUMBER,sum(score),None)

mysheet.put_cell(19,0,xlrd.XL_CELL_TEXT,'平均分',None)
for col in range(1,mysheet.ncols):
    score1 = mysheet.col_values(col,1,19)
    mysheet.put_cell(19,col,xlrd.XL_CELL_NUMBER,sum(score1)/18,None)

# 创建一个wwb表
wwb = xlwt.Workbook(encoding='utf-8')
newsheet = wwb.add_sheet('1班')
for row in range(mysheet.nrows):
    for col in range(mysheet.ncols):
        value = mysheet.cell_value(row,col)
        print(value)
        newsheet.write(row,col,value)

wwb.save('新成绩表.xls')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值