pythonstr类型字体加粗_教你如何⽤Python轻轻松松操作
Excel、Word、C。。。
Python 操作 Excel
常⽤⼯具
数据处理是 Python 的⼀⼤应⽤场景,⽽ Excel ⼜是当前最流⾏的数据处理软件。因此⽤ Python 进⾏数据处理时,很容易会和 Excel 打起交道。得益于前⼈的⾟勤劳作,Python 处理 Excel 已有很多现成的轮⼦,⽐如 xlrd & xlwt & xlutils 、 XlsxWriter 、 OpenPyXL ,⽽在Windows 平台上可以直接调⽤ Microsoft Excel 的开放接⼝,这些都是⽐较常⽤的⼯具,还有其他⼀些优秀的⼯具这⾥就不⼀⼀介绍,接下来我们通过⼀个表格展⽰各⼯具之间的特点:
类型xlrd&xlwt&xlutils XlsxWriter OpenPyXL Excel开放接⼝
以上可以根据需求不同,选择合适的⼯具,现在为⼤家主要介绍下最常⽤的 xlrd & xlwt & xlutils 系列⼯具的使⽤。
xlrd & xlwt & xlutils 介绍
xlrd&xlwt&xlutils 是由以下三个库组成:
xlrd:⽤于读取 Excel ⽂件;
xlwt:⽤于写⼊ Excel ⽂件;
xlutils:⽤于操作 Excel ⽂件的实⽤⼯具,⽐如复制、分割、筛选等;
安装库
安装⽐较简单,直接⽤ pip ⼯具安装三个库即可,安装命令如下:
python怎么读入excel$ pip install xlrd xlwt xlutils
写⼊ Excel
接下来我们就从写⼊ Excel 开始,话不多说直接看代码如下:
# 导⼊ xlwt 库
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, 88)
sh1.write(2, 0, '李四')
sh1.write(2, 1, '物联⽹⼯程')
sh1.write(2, 2, '数字信号处理分析')
sh1.write(2, 3, 95)
sh1.write(3, 0, '王华')
sh1.write(3, 1, '电⼦与通信⼯程')
sh1.write(3, 2, '模糊数学')
sh1.write(3, 3, 90)
# 写⼊第⼆个sheet
sh2.write(0, 0, '总分')
sh2.write(1, 0, 273)
# 最后保存⽂件即可
wb.save('test.xls')
运⾏代码,结果会看到⽣成名为 test.xls 的 Excel ⽂件,打开⽂件查看如下图所⽰:
以上就是写⼊ Excel 的代码,是不是很简单,下⾯我们再来看下读取 Excel 该如何操作。读取 Excel
读取 Excel 其实也不难,请看如下代码:
# 导⼊ xlrd 库
import xlrd
# 打开刚才我们写⼊的 test_w.xls ⽂件
wb = xlrd.open_workbook("test_w.xls")
# 获取并打印 sheet 数量
print( "sheet 数量:", wb.nsheets)
# 获取并打印 sheet 名称
print( "sheet 名称:", wb.sheet_names())
# 根据 sheet 索引获取内容
sh1 = wb.sheet_by_index(0)
# 或者
# 也可根据 sheet 名称获取内容
# sh = wb.sheet_by_name('成绩')
# 获取并打印该 sheet ⾏数和列数
print( u"sheet %s 共 %d ⾏ %d 列" % (sh1.name, ws, ls))
# 获取并打印某个单元格的值
print( "第⼀⾏第⼆列的值为:", ll_value(0, 1))
# 获取整⾏或整列的值
rows = w_values(0) # 获取第⼀⾏内容
cols = l_values(1) # 获取第⼆列内容
# 打印获取的⾏列值
print( "第⼀⾏的值为:", rows)
print( "第⼆列的值为:", cols)
# 获取单元格内容的数据类型
print( "第⼆⾏第⼀列的值类型为:", ll(1, 0).ctype)
# 遍历所有表单内容
for sh in wb.sheets():
for r in ws):
# 输出指定⾏
print( sh.row(r))
输出如下结果:
细⼼的朋友可能注意到,这⾥我们可以获取到单元格的类型
单元格的类型,上⾯我们读取类型时获取的是数字1,那1表⽰什么类型,⼜都有什么类型呢?别急下⾯我们通过⼀个表格展⽰下:
数值类型说明
通过上⾯表格,我们可以知道刚获取单元格类型返回的数字1对应的就是字符串类型。
修改 excel
上⾯说了写⼊和读取 Excel 内容,接下来我们就说下更新修改 Excel 该如何操作,修改时就需要⽤到 xlutils 中的⽅法了。直接上代码,来看下最简单的修改操作:
# 导⼊相应模块
import xlrd
py import copy
# 打开 excel ⽂件
readbook = xlrd.open_workbook("test_w.xls")
# 复制⼀份
wb = copy(readbook)
# 选取第⼀个表单
sh1 = wb.get_sheet(0)
# 在第五⾏新增写⼊数据
sh1.write(4, 0, '王欢')
sh1.write(4, 1, '通信⼯程')
sh1.write(4, 2, '机器学习')
sh1.write(4, 3, 89)
# 选取第⼆个表单
sh1 = wb.get_sheet(1)
# 替换总成绩数据
sh1.write(1, 0, 362)
# 保存
wb.save('test.xls')
从上⾯代码可以看出,这⾥的修改 Excel 是通过 xlutils 库的 copy ⽅法将原来的 Excel 整个复制⼀份,然后再做修改操作,最后再保存。看下修改结果如下:
格式转换操作
在平时我们使⽤ Excel 时会对数据进⾏⼀下格式化,或者样式设置,在这⾥把上⾯介绍写⼊的代码简单修改下,使输出的格式稍微改变⼀下,代码如下:
# 导⼊ 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, 90, styleNum)
sh1.write(2, 0, '李四')
sh1.write(2, 1, '2020-08-02')
sh1.write(2, 2, 95, styleNum)
# 设置单元格内容居中的格式
alignment = xlwt.Alignment()
alignment.horz = xlwt.Alignment.HORZ_CENTER
style = xlwt.XFStyle()
style.alignment = alignment
# 合并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, 185)
# 最后保存⽂件即可
wb.save('test.xls')
输出结果:
可以看出,使⽤代码我们可以对字体,颜⾊、对齐、合并等平时 Excel 的操作进⾏设置,也可以格式
化⽇期和数字类型的数据。当然了这⾥只是介绍了部分功能,不过这已经⾜够我们⽇常使⽤了,想了解更多功能操作可以参考官⽹。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。