xlrd和xlwt操作Excel文件

news/2024/11/26 11:44:19/

DAY8 xlrd和xlwt操作Excel文件

一、xlrd获取文件内容

1.打开excel文件
import xlrd
wb = xlrd.open_workbook('files/data1.xls')
2.获取所有工作表的表名 ->工作簿.sheet_names()
name = wb.sheet_names()
print(nmes)
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(2, 1, 3)
print(result)
2)按列获取数据
方式:

工作表.col_values(列下标)

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

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

result = stu_sheet.col_values(0)
print(result)result = stu_sheet.col_values(3, 1)
print(result)
练习:

# 练习1:一行一行的获取整个学生表中所有的数据
for x in range(m_r):print(stu_sheet.row_values(x))# 练习2:一列一列的获取所有学生的信息
for x in range(m_c):print(stu_sheet.col_values(x, 1))
6.获取单元格

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

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

print(stu_sheet.cell(1, 0))
print(stu_sheet.cell(1, 2).value)

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


result = stu_sheet.row(0)
print(result)

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

result = stu_sheet.col(0)

二、xlwt对文件进行写操作

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

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

import xlwt   #导入xlwt第三方库
wb = xlwt.Workbook()
2.添加-工作表

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

2)工作簿.add_sheet(表名, cell_overwrite_ok=True) - 在工作簿中添加指定名字对应的工作表,这个表中的单元格可以重写

sheet1 = wb.add_sheet('数据1')
sheet1 = wb.add_sheet('数据2', cell_overwrite_ok = True)
3.写入数据

工作表.write(行下标 ,列下标, 数据) - 将数据写入到指定工作表中指定位置->此处数据为变量循环时可用x替代

sheet1.write(0, 0, '名字')
sheet1.write(1, 2, 'hello')
# sheet1.write(0, 0, 'name')   #报错 ,不可重写但是表2可以sheet2 = write(0, 0, '名字')
sheet2 = write(1, 2, 'hello')
sheet2 = write(0, 0, 'name')    #成功不报错

三、xlwt修改单元格样式

#前期工作
import xlwt   #导入xlwt
wb = xlwt.Workbook()  #创建工作簿
sheet = wb.add_sheet('样式')  #添加名为样式的工作表

流程

  • 创建样式-对象(可以有多个)
style1 = xlwt.XFStyle()
  • 创建字体边框对齐等对象
font = xlwt.Font()
#变量名可以改,通常为f1  f2...
b1 = xlwt.Borders()
al1 = xlwt.Alignment()
p1 = xlwt.Pattern()
  • 添加字体、边框、对齐、填充等各种样式
font.name = '⿊体' #字体
font.bold = True		#加粗
font.height = 25 * 25	#字体大小
font.underline = xlwt.Font.UNDERLINE_SINGLE  #单下划线
font.escapement = xlwt.Font.ESCAPEMENT_SUPERSCRIPT  #双下划线
font.italic = True   	#斜体
font.colour_index = 52  #字体颜色
font.struck_out = True	#删除线
  • 应用样式–将字体和样式进行关联
style1.font = font
#写入内容时设置样式
sheet.write(0, 0, '名字', style=style1)
sheet.write(2, 3, '对齐格式', style=style2)

举例:

# 添加边框样式 上下左右4个
b1 = xlwt.Borders()
b1.bottom = 10
b1.bottom_colour = 16
#添加对齐样式
al1 = xlwt.Alignment()
al1.vert = xlwt.Alignment.VERT_CENTER
al1.horz = xlwt.Alignment.HORZ_CENTER
#添加填充样式
p1 = xlwt.Pattern()
p1.pattern = xlwt.Pattern.SOLID_PATTERN
p1.pattern_fore_colour = 13

代码:

import xlwtwb = xlwt.Workbook()
sheet = wb.add_sheet('样式')#================设置单元格的样式============
# 1.创建样式对象
style1 = xlwt.XFStyle()# 2.添加字体样式
font1 = xlwt.Font()
font1.name = '黑体'
font1.bold = True
font1.height = 20*20
font1.colour_index = 12
style1.font = font1# 3.添加边框样式
b1 = xlwt.Borders()
b1.bottom = 10
b1.bottom_colour = 16
style1.borders = b1# 4.添加对齐样式
style2 = xlwt.XFStyle()
al1 = xlwt.Alignment()
al1.vert = xlwt.Alignment.VERT_CENTER
al1.horz = xlwt.Alignment.HORZ_CENTER
al1.rota = 90
style2.alignment = al1# 5.添加填充样式
p1 = xlwt.Pattern()
p1.pattern = xlwt.Pattern.SOLID_PATTERN
p1.pattern_fore_colour = 13
style1.pattern = p1sheet.write(0, 0, '名字', style=style1)
sheet.write(2, 3, '对齐格式', style=style2)# 6.合并单元格
# 工作表.write_merge(行下标1, 行下标2, 列下标1,列下标2, 数据, 样式)
sheet.write_merge(8, 8, 2, 6, 'hello', style1)
sheet.write_merge(12, 22, 2, 7, 'hello', style2)# 7.设置列的宽度和行的高度
# 1)设置列的宽度
sheet.col(0).width = 30*256# 2)设置行的高度
# 运行指定的行可以设置高度 mismatch是一种允许修改行高的许可
sheet.row(0).height_mismatch = True
# 设置行的高度
sheet.row(0).height = 30*60wb.save('files/example2.xls')print(xlwt.Style.colour_map)

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

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

相关文章

IR2104/03 TLP250

闸门驱动电源范围从10–20V欠电压锁定高侧输出与输入同步关闭输入将关闭这两个通道两个信道的匹配传输延迟IR2104(S) 高压、高速功率MOSFTE和IGBT驱动器,具有依赖的高侧和低侧参考输出通道 绝对最大额定参数:表明设备损坏可能超过的持续极限 引脚定义&a…

74LS244芯片介绍

74LS244是一种8路数据总线缓冲器,其逻辑功能和引脚如图2.11所示-P38.。 该缓冲器内部包含8个三态缓冲单元,它们被分为两组,每组4个单元,分别由门控信号1G(低电平有效)和2G(低电平有效&#xff0…

xlrd.biffh.XLRDError: Excel xlsx file; not supported,两种解决方案

调低xlrd版本 xlrd过高,卸载旧版本重新安装1.2.0 1、打开terminal 2、卸载现在的版本 pip uninstall xlrd 3、安装低本班xlrd:pip install xlrd1.2.0 调低excel版本 excel文件的版本过高,复制源文件,另存为:xls格式 1、…

LLCC68低功耗Sub-GHz LoRa射频收发器LLCC68IMLTRT

目录 LLCC68简介主要特性射频开关参考原理图应用领域 LLCC68简介 LLCC68是一款Sub-GHz LoRa射频收发器,适用于中距离室内以及室内到室外的无线应用。支持SPI 接口。与SX1262的引脚兼容,专为延长电池寿命而设计,有效接收电流消耗低至4.2mA。S…

关于 xlrd.biffh.XLRDError: Excel xlsx file; not supported 解决方法【已解决】

订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我。推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V!说明:该文属于 Python全栈白宝书专栏,免费阶段订阅数量4300+,购买任意白宝书体系化专栏可加入TFS-CLUB 私域社区。福利:加入社区的小伙伴们,除…

【bug】XLRDError: Excel xlsx file; not supported

今天儿童节,记录一个bug。 楼主写的一套代码是在公司的台式机上,今天需要下基层,就把项目代码拷贝到U盘,然后在基层用笔记本运行代码的时候出现: raise ImportError(msg) from None ImportError: Missing optional d…

已解决xlrd.biffh.XLRDError: Excel xlsx file:not supported

已解决(pandas读取Excel表格报错)raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]‘; not supported’) xlrd.biffh.XLRDError: Excel xlsx file; not supported 文章目录 报错代码报错翻译报错原因解决方法千人全栈VIP答疑群联系博主帮忙解决报…

关于xlrd.biffh.XLRDError: Excel xlsx file; not supported的解决方法

关于xlrd.biffh.XLRDError: Excel xlsx file; not supported的解决方法 关于xlrd.biffh.XLRDError: Excel xlsx file; not supported的解决方法问题描述报错原因解决方法结果 关于xlrd.biffh.XLRDError: Excel xlsx file; not supported的解决方法 问题描述 在做机器学习实验…