Day8 xlrd和xlwt操作Excel文件

news/2025/2/21 6:20:22/

一、xlrd获取文件内容

import xlrd

1.打开Excel文件

wb = xlrd.open_workbook('file/data1.xls')

2.获取所有工作表的表名

工作簿.sheet_names()

names = wb.sheet_names()
print(names)

3.获取工作表

1)获取所有的工作表 - 工作簿.sheets()

all_sheet = wb.sheets()
print(all_sheet)

2)获取一个工作表:

工作簿.sheet_by_name(表名)

工作簿.sheet_by_index(下标)

stu_sheet = wb.sheet_by_name('students')
print(stu_sheet)tea_sheet = wb.sheet_by_index(1)
print(tea_sheet)

4.获取最大行数和最大列数

工作表.nrows

工作表.ncols

m_r = stu_sheet.nrows
m_c = stu_sheet.ncols
print(m_r, m_c)

5.按行或者按列获取数据

1)按行获取数据

工作表.row_values(行下标) - 获取指定行对应的所有数据(行下标是从0开始的)

工作表.row_values(行下标, 起始列下标) - 获取指定行中指定列开始所有的数据

工作表.row_values(行下标, 起始列下标, 终止列下标) - 获取指定行中指定范围的所有数据(终止列下标对应的数据取不到)

result = stu_sheet.row_values(3)
print(result)       # ['小花', '女', 22.0, 95.0]result = stu_sheet.row_values(3,2)
print(result)           #[22.0, 95.0]result = stu_sheet.row_values(3,2,3)
print(result)           #[22.0]

2)按列获取数据

工作表.col_values(列下标)

工作表.col_values(列下标, 起始行下标)

工作表.col_values(列下标, 起始行下标, 终止行下标)

result = stu_sheet.col_values(0)
print(result)           #['姓名', '小明', '张三', '小花', '老王']result = stu_sheet.col_values(3,1)
print(result)           #[99.0, 87.0, 95.0, 77.0]

练习1:一行一行的获取整个学生表中所有数据

for row in range(stu_sheet.nrows):print(stu_sheet.row_values(row))

练习2:一列一列的获取所有学生的信息

for col in range(stu_sheet.ncols):print(stu_sheet.col_values(col,1))

6.获取单元格

1)**工作表.cell(行下表,列下标) ** - 获取指定位置对应的单元格对象

2)单元格.value - 获取单元格中的数据

print(stu_sheet.cell(1,0))      #text:'小明'
print(stu_sheet.cell(1,2).value)    #20.0

3)**工作表.row(行下标) ** - 获取指定行中所有的单元格

result = stu_sheet.row(0)
print(result)       #[text:'姓名', text:'性别', text:'年龄', text:'分数']

4)工作表.col(列下标) - 获取指定列中所有的单元格

result = stu_sheet.col(0)
print(result)       #[text:'姓名', text:'小明', text:'张三', text:'小花', text:'老王']

二、xlwt对文件进行写操作

import xlwt

1.创建Excel文件(创建工作簿)

注意:创建工作簿的时候不会自动创建工作表

wb = xlwt.Workbook()

2.添加工作表

1)工作簿.add_sheet(表名) - 在工作簿中添加指定名字对应的工作表,这个表中的单元格不能重写

2)工作簿.add_sheet(表名,cell_overwrite_ok=True)

sheet1 = wb.add_sheet('数据1')
sheet2 = wb.add_sheet('数据2',cell_overwrite_ok=True)

3.写入数据

工作表.write(行下标,列下标,数据) - 将数据写入到指定的工作表中指定位置

sheet1.write(0,0,'名字')
# sheet1.write(0,0,'name')  报错
sheet2.write(0,0,'名字')
sheet2.write(0,0,'name')
wb.save('file/example1.xls')

三、xlwt修改单元格格式

import xlwtwb = xlwt.Workbook()
sheet = wb.add_sheet('样式')

1.创建样式对象

style1 = xlwt.XFStyle()

2.添加字体样式

font1 = xlwt.Font()
font1.name = '黑体'
style1.font = font1

3.添加边框样式

b1 = xlwt.Borders()
b1.bottom = 10
b1.bottom_colour = 13
style1.borders = b1

4.添加对齐样式

style2 = xlwt.XFStyle()
all = xlwt.Alignment()
all.vert = xlwt.Alignment.VERT_CENTER
all.horz = xlwt.Alignment.HORZ_CENTER
all.rota = 45
style2.alignment = all

5.添加填充样式

p1 = xlwt.Pattern()
p1.pattern = xlwt.Pattern.SOLID_PATTERN
p1.pattern_fore_colour = 13
style1.pattern = p1
sheet.write(0,0,'名字',style = style1)
sheet.write(1,2,'对齐方式',style = style2)

6.合并单元格

工作表.write_merge(行下标1,行下标2,列下标1,列下标2,数据,样式)

sheet.write_merge(12,22,2,7,'hello',style2)

7.设置列的宽度和行的高度

1)设置列的宽度

sheet.col(0).width = 30*256

2)设置行的高度

# 允许设置指定行的高度
sheet.row(0).height_mismatch = True
# 设置指定行的高度
sheet.row(0).height = 30*256
wb.save('file/example2.xls')

四、颜色对照表

import xlwtwb = xlwt.Workbook()
sheet = wb.add_sheet('颜色对照表')# 1. 准备相关的样式
# 边框
b1 = xlwt.Borders()
b1.bottom = b1.top = b1.left = b1.right = 1
b1.bottom_colour = b1.top_colour = b1.left_colour = b1.right_colour = 8# 字体
f1 = xlwt.Font()
f1.name = '黑体'
f1.bold = True
f1.height = 18 * 18# 对齐
a1 = xlwt.Alignment()
a1.horz = xlwt.Alignment.HORZ_CENTER
a1.vert = xlwt.Alignment.VERT_CENTERstyle1 = xlwt.XFStyle()
style1.font = f1
style1.borders = b1
style1.alignment = a1style2 = xlwt.XFStyle()
style2.borders = b1
style2.alignment = a1# 2. 写入对应的数据
sheet.write(0, 0, '颜色', style=style1)
sheet.write(0, 1, '颜色单词', style=style1)
sheet.write(0, 2, '颜色', style=style1)row = 1
colors = xlwt.Style.colour_map
style3 = xlwt.XFStyle()
style3.borders = b1
for key in colors:p1 = xlwt.Pattern()p1.pattern = xlwt.Pattern.SOLID_PATTERNp1.pattern_fore_colour = colors[key]style3.pattern = p1# 颜色显示的列sheet.write(row, 0, None, style=style3)# 单词sheet.write(row, 1, key, style=style2)# 颜色数值sheet.write(row, 2, colors[key], style=style2)row += 1# 设置每一列的宽度
for x in range(3):sheet.col(x).width = 20 * 256# 设置每一行的高度
for x in range(row):sheet.row(x).height_mismatch = Truesheet.row(x).height = 15 * 60wb.save('files/颜色.xls')

五、xlutils的用法

xlrd只能对Excel文件进行读操作,而且只能用通过xlrd打开的Excel文件(xlrd无法直接操作xlwt创建的工作簿)

xlwt只能创建新的Excel,无法获取已经存在的Excel文件

结论:xlutils只能让已经存在的Excel可以添加新的表的写操作,不能直接修改表中的数据。

# 1.使用xlrd打开已经存在的工作簿对象(得到一个只读的工作簿)
wb = xlrd.open_workbook('files/data1.xls')
sheet0 = wb.sheet_by_index(0)# 2.将只读的工作簿转换成可写的工作簿
wb1 = copy(wb)# sheet1 = wb1.add_sheet('data2')
# sheet1.write(0, 0, '姓名')sheet0.write(0, 0, 'name')wb1.save('files/data1.xls')

http://www.ppmy.cn/news/546302.html

相关文章

WinDLX实验:熟悉WinDLX

基本介绍 DLX是一个流水线处理器实例。 DLX以及一些机器的指令集结构的设计思想十分相似:具有一个简单Load/Store Load/Store指令集;注重指令的流水效率;简化指令的译码;高效支持编译器。 WinDLX 是一个基于Windows 的 DLX 模拟器…

WEB安全基础 - - - XRAY使用

目录 爬虫 被动扫描 生成ca证书 开启监听 浏览器代理设置 将浏览器设置为xray模式 BurpSuite联动XRAY 监听 Burpsuit主动扫描 XRAY脚本编写 爬虫 xray.exe webscan --basic-crawler http://xxx.com/ --html-output xray-xxx.html xray.exe ws --basic http://xxx.com/ -…

XLNet模型

1. 什么是XLNet XLNet 是一个类似 BERT 的模型,而不是完全不同的模型。总之,XLNet是一种通用的自回归预训练方法。它是CMU和Google Brain团队在2019年6月份发布的模型,最终,XLNet 在 20 个任务上超过了 BERT 的表现,并…

import xlwings时_pickle.UnpicklingError: invalid load key, ‘\x00‘解决方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,科大讯飞比赛第三名,CCF比赛第四名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

xlWarKey v2.0 手记

经过一周多的断断续续的奋战,终于赶在除夕夜把 xlWarKey v2.0 发布了。现在把一些心得体会记一下。 从去年 5 月 21 发布 1.2 版以来,到现在已经半年多了,由于上学期忙于找工作等一堆乱七八糟的事,一直没去更新它。但期间得到的反…

Linux用户信息关键文件详解

passwd文件说明 /etc/passwd文件记录了Linux所有用户的信息,是系统的关键文件之一。 文件格式内容如上图。 文件中的条目以“:”为分隔符,各个字段记录的信息依次为: 第一个字段:记录用户名 第二个字段:值x表示该用…

视频直播技术随笔

前言 昨天看到几个传统APP的功能菜单中也新增了直播功能,仔细观察现在手机上90%的应用增加了直播功能,感慨流媒体功能已遍布人们生活中的每个角落,所性今天就来仔细聊一聊我所了解的视频直播技术。当然视频直播领域博大精深,我了…

科研ABC - 工具

1.论文查询和下载 学术搜索:谷歌学术(原站/镜像1/镜像2)、百度学术(端口链接) 说明:二次文献浏览入口 SCI-HUB: 端口tw / 端口se / 端口wang / 端口ren / 端口ltd 说明:scihub是下载…