Python之Excel文件处理

本文详细介绍了Python中用于读写Excel文件的xlrd和xlwt模块,包括安装方法、获取sheet、cell操作、数据类型及如何写入和编辑Excel文件。xlrd用于读取xls文件,xlwt用于写入和编辑xls文件。同时,文章还展示了读取、写入和编辑数据的具体代码示例,以及cell的常见数据类型。
摘要由CSDN通过智能技术生成

一、xlrd和xlwt模块

1.python操作Excel表格需要导入两个模块:xlrd和xlwt
两个模块都非系统自带,需手动安装,安装方式这里提供两种:
(1)去python官网安装
(2)可到编译器终端进行安装,安装命令为:pip install 模块名
在这里插入图片描述
2.xlrd用于读取Excel文件,xlwt用于将数据写入、编辑Excel文件;
现版本的xlrd和xiwt都只支持读取、写入后缀为.xls的文件,不可用于后缀为.xlsx的文件

3.用xlrd模块读取文件时如果出现报错“xlrd.biffh.XLRDError: Excel xlsx file; not supported”,原因在于现版本的xlrd模块不支持读取后缀为.xlsx的文件,只支持读取后缀为.xls的文件
若想用读取后缀为.xlsx的文件,则需要删除现版本xlrd模块,安装1.2.0版本的xlrd模块,具体操作步骤如下:
(1)卸载命令为:pip uninstall xlrd
(2)安装命令为:pip install xlrd==1.2.0


二、获取sheet

import xlrd

# sheet_names:获取所有的sheet的名字
workbook = xlrd.open_workbook("运动记录.xlsx")
print(workbook.sheet_names())

# sheet_by_name:根据名称来获取指定的sheet对象
sheet = workbook.sheet_by_name("第一周")
print(sheet.name)

# sheet_by_index:根据索引来获取指定的sheet对象
sheet = workbook.sheet_by_index(1)
print(sheet.name)

# 获取所有的sheet对象
sheets = workbook.sheets()
for sheet_ in sheets:
    print(sheet_.name, end=" ")
print()

# sheet.nrows:获取指定sheet中的行数
# sheet.ncols:获取指定sheet中的列数
sheet1 = workbook.sheet_by_index(0)
print(sheet1.nrows, sheet1.ncols)

三、关于cell的相关操作

import xlrd

# sheet.cell(row,col):获取指定行和列的cell对象,返回值的类型为xlrd.sheet.Cell
workbook = xlrd.open_workbook("运动记录.xlsx")
sheet1 = workbook.sheet_by_index(0)
cell = sheet1.cell(1, 0)
print(cell.value)

# sheet.cell_value(row,col):获取指定行和列的值,返回的是字符串
cell_ = sheet1.cell_value(1, 0)
print(cell_)


# sheet.row_slice(row,start_col,end_col):获取指定行的某几列对象,返回一个列表,里面各数据的类型为xlrd.sheet.Cell
cells = sheet1.row_slice(1, 1, 9)
for i in cells:
    print(i.value, end=' ')

# sheet.row_values(row,start_col,end_col):获取指定行的某几列的值,返回一个列表,里面各数据是字符串类型
cells = sheet1.row_values(1, 1, 9)
for i in cells:
    print(i, end=' ')


# sheet.col_slice(col,start_row,end_row):获取指定行的某几列对象,返回一个列表,里面各数据的类型为xlrd.sheet.Cell
cells = sheet1.col_slice(0, 1, sheet1.nrows)
for i in cells:
    print(i.value, end=' ')

# sheet.col_values(col,start_row,end_row):获取指定行的某几列对象,返回一个列表,里面各数据是字符串类型
cells = sheet1.col_values(0, 1, sheet1.nrows)
for i in cells:
    print(i, end=' ')

四、cell常用数据类型

  1. xlrd.XL_CELL_TEXT(Text):文本类型
  2. xlrd.XL_CELL_NUMBER(Number):数值类型
  3. xlrd.XL_CELL_DATE(Data):日期时间类型
  4. xlrd.XL_CELL_BOOLEAN(Bool):布尔类型
  5. xlrd.XL_CELL_EMPTY:空白数据类型

五、将数据写入Excel文件

1.创建一个Workbook对象
2.创建一个sheet对象
3.使用sheet.write方法把数据写入到heet中的指定行列,如果想要在原来Workbook对象上添加新的cell,则需要调用put_cell来添加
4.保存Excel文件

import xlwt
import random

workbook = xlwt.Workbook()
sheet = workbook.add_sheet("第一周运动记录")
headers = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
for index, header in enumerate(headers):
    sheet.write(0, index+1, header)
names = ['chen', 'lu', 'zhang', 'cai']
for index, name in enumerate(names):
    sheet.write(index+1, 0, name)

for row in range(1, 5):
    for col in range(1, 8):
        sheet.write(row, col, random.randint(5, 20))
workbook.save("运动记录1.0.xls")

六、编辑Excel文件

1.读取某个Excel文件
2.在读取的sheet上面对cell进行修改
3.重新创建一个新的Excel文件,把之前读取的数据写入到新的Excel文件中

import xlrd
import xlwt

workbook = xlrd.open_workbook("运动记录1.0.xls")
sheet = workbook.sheet_by_index(0)
# 求总公里数
sheet.put_cell(0, 8, xlrd.XL_CELL_TEXT, '总公里数', None)
for row in range(1, sheet.nrows):
    cells = sheet.row_values(row, 1, 7)
    total = sum(cells)
    sheet.put_cell(row, 8, xlrd.XL_CELL_NUMBER, total, None)
# 求平均公里数
sheet.put_cell(5, 0, xlrd.XL_CELL_TEXT, '平均公里数', None)
for col in range(1, sheet.ncols):
    cells = sheet.col_values(col, 1, 4)
    avg = sum(cells)/len(cells)
    avg = float('%.2f' % avg)  # 保留两位小数
    sheet.put_cell(5, col, xlrd.XL_CELL_NUMBER, avg, None)
# 写入Excel文件
work_book = xlwt.Workbook()
sheet1 = work_book.add_sheet("sheet123")
for row in range(0, sheet.nrows):
    for col in range(0, sheet.ncols):
        sheet1.write(row, col, sheet.cell_value(row, col))
work_book.save("运动记录2.0.xls")
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值