Python如何操作Excel

一. Python操作Excel

常用工具:

数据处理是Python的一大应用场景,而Excel又是当前最流行的数据处理软件。因此用Python进行数据处理时,很容易会和Excel打交道。得益于前人的辛勤劳作,Python处理Excel

已有很多现成的轮子,比如xlrd&xlwt&xlutils, XlsxWriter, OpenPyXL, 而在Windows平台上可以直接调用Microsoft Excel的开放接口,这些都是比较常用的工具,还有其他一些优秀的

工具这里就不一样介绍,接下来通过表格展示各工具直接的特点。

 

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

1. xlrd&xlwt&xlutils介绍

xlrd: 用于读取Excel文件

xlwt: 用于写入Excel文件

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

安装: pip install 模块名称

 

 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')

 

执行结果:

以上就是写入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 in wb.sheets():
    for r in range(sh.nrows):
        #输出指定行
        print(sh.row(r))

执行结果:

 

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

 

xlrd: 修改Excel

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

#!/usr/bin/python
# -*- coding: utf-8 -*-

#修改Excel

import xlrd
from xlutils.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整个复制一份,然后在做修改,最后在保存

 

 

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')

执行结果:

 

 

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

Python-excel官网:www.python-excel.org/

 

posted @ 2020-12-21 22:38  风不再来  阅读(2525)  评论(0编辑  收藏  举报