python如何操作excel数据_Python如何操作Excel

本文介绍了Python中用于操作Excel的常用库xlrd, xlwt和xlutils。xlrd用于读取Excel文件,xlwt用于写入,xlutils则提供了诸如复制、分割和筛选等实用工具。示例代码展示了如何使用这些库进行Excel文件的读写和修改操作,包括创建新sheet、写入数据、读取数据、更新内容以及格式设置等。" 104600003,9354687,HTML样式:外部、内部与内联样式解析,"['HTML', 'CSS', '前端开发']
摘要由CSDN通过智能技术生成

a3fc4ab51a80a107e8eda5421199c918.png

以上可以根据需求的不同,选择合适的工具,现在给大家主要介绍最常用的xlrd&xlwt&xlutils系统工具的使用

1. xlrd&xlwt&xlutils介绍

xlrd: 用于读取Excel文件

xlwt: 用于写入Excel文件

xlutils: 用于操作Excel文件的实用工具,比如复制,分割,筛选等

安装: pip install 模块名称

3fc398d5e9ab0b0d42daf2edf0022d94.png

xlwt: 写入Excel

示例代码如下:

#!/usr/bin/python

#-*- coding: utf-8 -*-#写入Excel操作

import xlwt

#创建xls文件对象

wb=xlwt.Workbook()

#新增两个表单页

sh1= wb.add_sheet('成绩')

sh2= wb.add_sheet('汇总')

#然后按照位置来添加数据,第一个参数是行,第二个参数是列

#写入第一个sheet

sh1.write(0, 0, '姓名')

sh1.write(0, 1, '专业')

sh1.write(0, 2, '科目')

sh1.write(0, 3, '成绩')

sh1.write(1, 0, '张三')

sh1.write(1, 1, '信息与通信工程')

sh1.write(1, 2, '数值分析')

sh1.write(1, 3, 99)

sh1.write(2, 0, '张三')

sh1.write(2, 1, '信息与通信工程')

sh1.write(2, 2, '数值分析')

sh1.write(2, 3, 99)

#写入第二个sheet

sh2.write(0, 0, '总分')

sh2.write(1, 0, 200)

#最后保存文件即可

wb.save('test.xls')

执行结果:

9ea94f2baa22f5f1153065b4bdfd86e8.png

以上就是写入Excel的代码

xlrd: 读取Excel

#!/usr/bin/python

#-*- coding: utf-8 -*-#读取Excel

import xlrd

#打开刚才写入的test.xls文件

wb= xlrd.open_workbook('test.xls')

#获取打印sheet数量

print('sheet 数量', wb.nsheets)

#获取打印sheet名称

print('sheet名称', wb.sheet_names())

#根据sheet索引获取内容

sh1= wb.sheet_by_index(0)

#或者,根据sheet名称获取内容

sh1= wb.sheet_by_name('成绩')

#获取打印该sheet的行数和列数

print('sheet %s %d 行 %d 列'%(sh1.name, sh1.nrows, sh1.ncols))

#获取并打印某个单元格的值

print('第一行第二列的值是: %s'%(sh1.cell_value(0, 1)))

#获取整行或整列的值

rows= sh1.row_values(0) #获取第一行内容

cols= sh1.col_values(1) #获取第二列内容

#打印获取的行列值

print("第一行的值", rows)

print("第二列的值", cols)

#获取单元格内容的数据类型

print('第二行第一列的值类型为:', sh1.cell(1, 0).ctype)

#遍历所有表单内容for sh inwb.sheets():for r inrange(sh.nrows):

#输出指定行

print(sh.row(r))

执行结果:

84a382ffc84348b882859dbef63c40f5.png

我们可以获取到单元格的类型(ctype), 上面我们读取类型时获取的是数字1,那么1表示什么类型呢,有都有什么类型呢?

a850778422dc795433c8effa93d90592.png

xlrd: 修改Excel

上面说了写入和读取Excel内容,接下来我们就说更新修改Excel该如何操作,修改的时候就需要用到xlutils的方法。

#!/usr/bin/python

#-*- coding: utf-8 -*-#修改Excel

import xlrdfromxlutils.copy import copy

#打开Excel文件

readbook= xlrd.open_workbook('test.xls')

#复制一份文件

wb=copy(readbook)

#选取第一个表单

sh1= wb.get_sheet(0)

#进行新增写入数据

sh1.write(2, 0, '王欢')

sh1.write(2, 1, '计算机')

sh1.write(2, 2, '机器学习')

sh1.write(2, 3, 80)

#选取第二个表单

sh2= wb.get_sheet(1)

#替换总成绩数据

sh2.write(1, 0, 300)

#保存

wb.save('test_back.xls')

从上面代码有看出来,这里修改Excel是通过xlutils库的copy方法将原来的Excel整个复制一份,然后在做修改,最后在保存

b8609d89faa81f31a42524ccb35a815c.png

c5e54633754aa0ef4ed165c9ba85dc36.png

xlwt: 格式转换操作

在平时我们会使用Excel时会对数据进行一下格式化,或者样式设置,在这里把上面介绍写入的代码简单修改下,使输出的格式稍微改变一下,代码如下

#!/usr/bin/python

#-*- coding: utf-8 -*-#导入xlwt库

import xlwt

#设置写入格式字体红色加粗

styleBR= xlwt.easyxf('font: name Times New Roman, color-index red, bold on')

#设置数字型格式为小数点后保留两位

styleNum= xlwt.easyxf(num_format_str='#,##0.00')

#设置日期型格式显示为YYYY-MM-DD

styleDate= xlwt.easyxf(num_format_str='YYYY-MM-DD')

#创建xls文件对象

wb=xlwt.Workbook()

#新增两个表单页

sh1= wb.add_sheet('成绩')

sh2= wb.add_sheet('汇总')

#按照位置添加数据,第一个参数是行,第二个参数是列

sh1.write(0, 0, '姓名', styleBR)

sh1.write(0, 1, '日期', styleBR)

sh1.write(0, 2, '成绩', styleBR)

#插入数据

sh1.write(1, 0, '张三', )

sh1.write(1, 1, '2020-07-01', styleDate)

sh1.write(1, 2, 80, styleNum)

sh1.write(2, 0, '张三', )

sh1.write(2, 1, '2020-07-01', styleDate)

sh1.write(2, 2, 80, styleNum)

#设置单元格内容居中的格式

alignmnet=xlwt.Alignment()

alignmnet.horz=xlwt.Alignment.HORZ_CENTER

style=xlwt.XFStyle()

style.alignment=alignmnet

#合并A4,B4单元格,并将内容设置为居中

sh1.write_merge(3, 3, 0 , 1, '总分', style)

#通过公式,计算C2+C3单元格的和,然后写入第四行第三列

sh1.write(3, 2, xlwt.Formula('C2+C3'))

#对sheet2写入数据

sh2.write(0, 0, '总分', styleBR)

sh2.write(1, 0 ,199)

#最后保存文件

wb.save('test2.xls')

执行结果:

7994cb8a1aab0f17a19d91e1b410d8f4.png

dbcc39cadc9c6f36f251dd73874c0bdc.png

可以看出,使用代码我们可以对字体,颜色,对齐,合并等平时Excel的操作进行设置,也可以格式化日期和数字类型的数据。要想了解更多的功能操作可以参考官网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值