Python 库学习 —— Excel存储(xlwt、xlrd)

Python操作Excel可以使用xlwt模块(写)和xlrd模块(读),下面进行简单说明。


系列文章

Python 学习 01 —— Python基础
Python 库学习 —— urllib 学习
Python 库学习 —— BeautifulSoup4学习
Python 库学习 —— Re 正则表达式
Python 库学习 —— Excel存储(xlwt、xlrd)
Python 学习 02 —— Python爬虫
Python 库学习 —— Flask 基础学习


一、xlwt模块

1、基本使用

import xlwt
# 1.创建Workbook对象并设置编码(通常是设置为utf-8)
workbook = xlwt.Workbook(encoding="utf-8")
# 2.创建一个worksheet(就是Excel最下面那个选项页)
worksheet = workbook.add_sheet("MySheet")
# 3.写入Excel,write(a, b, c)参数:行,列,值
worksheet.write(0, 0, "Hello Python")
# 4.保存(后缀 xls是2003版Excel,xlsx是2017之后的,可以保存更多内容)
workbook.save("FirstExcel.xlsx")

运行结果:

2、设置样式

import xlwt

workbook = xlwt.Workbook(encoding="utf-8")
worksheet = workbook.add_sheet("MySheet")

style = xlwt.XFStyle()  # 初始化样式
font = xlwt.Font()  # 为样式创建字体
font.name = 'Times New Roman'
font.bold = True  # 黑体
font.underline = True  # 下划线
font.italic = True  # 斜体字
style.font = font  # 设定样式
worksheet.write(0, 0, 'Unformatted value')  # 不带样式的写入
worksheet.write(1, 0, 'Formatted value', style)  # 带样式的写入

workbook.save("SecondExcel.xls")

运行结果:

3、其他设置

import xlwt
import datetime

workbook = xlwt.Workbook(encoding="utf-8")
worksheet = workbook.add_sheet("MySheet")

# 设置单元格宽度
worksheet.col(0).width = 3333

# 输入日期到单元格
style = xlwt.XFStyle()
# D-MMM-YY、D-MMM、MMM-YY、h:mm、h:mm:ss、h:mm、h:mm:ss、M/D/YY h:mm、mm:ss
style.num_format_str = 'M/D/YY'
worksheet.write(0, 0, datetime.datetime.now(), style)

# 添加一个公式
worksheet.write(0, 0, 5)  # Outputs 5
worksheet.write(0, 1, 2)  # Outputs 2
worksheet.write(1, 0, xlwt.Formula('A1*B1'))  # Should output "10" (A1[5] * A2[2])
worksheet.write(1, 1, xlwt.Formula('SUM(A1,B1)'))  # Should output "7" (A1[5] + A2[2])

# 添加超链接:输出链接到 http://www.google.com 的文本 "Google"
worksheet.write(0, 0, xlwt.Formula('HYPERLINK("http://www.google.com";"Google")'))

# 合并行和列
worksheet.write_merge(0, 0, 0, 3, 'First Merge')

# 设置对齐方式
alignment = xlwt.Alignment()
# 其他选择: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED
alignment.horz = xlwt.Alignment.HORZ_CENTER
# 其他选择: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
alignment.vert = xlwt.Alignment.VERT_CENTER
style = xlwt.XFStyle()
style.alignment = alignment
worksheet.write(0, 0, 'Cell Contents', style)

# 添加边框
borders = xlwt.Borders()
# 选项: DASHED虚线、NO_LINE没有、THIN实线
borders.left = xlwt.Borders.DASHED
borders.right = xlwt.Borders.DASHED
borders.top = xlwt.Borders.DASHED
borders.bottom = xlwt.Borders.DASHED
# 设置边框宽度
borders.left_colour = 0x40
borders.right_colour = 0x40
borders.top_colour = 0x40
borders.bottom_colour = 0x40
style = xlwt.XFStyle()
style.borders = borders
worksheet.write(0, 0, 'Cell Contents', style)

# 设置单元格背景色
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN # May be: NO_PATTERN, SOLID_PATTERN, or 0x00 through 0x12
pattern.pattern_fore_colour = 5 # May be: 8 through 63. 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow , almost brown), 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray, the list goes on...
style = xlwt.XFStyle() # Create the Pattern
style.pattern = pattern # Add Pattern to Style
worksheet.write(0, 0, 'Cell Contents', style)

workbook.save("SecondExcel.xls")

二、xlrd模块

1、获取book的工作表

# 如果路径或者文件名有中文,就给前面加一个r字符或者进行转码
data = xlrd.open_workbook(r"FirstExcel.xlsx") # 加r
filename = filename.decode('utf-8') # 转码

table = data.sheets()[0] # 通过索引顺序获取
table = data.sheet_by_index(0)) # 通过索引顺序获取
table = data.sheet_by_name(sheet_name) # 通过名称获取

# 以上三个函数都会返回一个xlrd.sheet.Sheet()对象
names = data.sheet_names()    #返回book中所有工作表的名字
data.sheet_loaded(sheet_name or indx)   # 检查某个sheet是否导入完毕

2、行操作

nrows = table.nrows  #获取该sheet中的有效行数

table.row(rowx)  #返回由该行中所有的单元格对象组成的列表

table.row_slice(rowx)  #返回由该列中所有的单元格对象组成的列表

table.row_types(rowx, start_colx=0, end_colx=None)    #返回由该行中所有单元格的数据类型组成的列表

table.row_values(rowx, start_colx=0, end_colx=None)   #返回由该行中所有单元格的数据组成的列表

table.row_len(rowx) #返回该列的有效单元格长度

3、列操作

ncols = table.ncols   #获取列表的有效列数

table.col(colx, start_rowx=0, end_rowx=None)  #返回由该列中所有的单元格对象组成的列表

table.col_slice(colx, start_rowx=0, end_rowx=None)  #返回由该列中所有的单元格对象组成的列表

table.col_types(colx, start_rowx=0, end_rowx=None)    #返回由该列中所有单元格的数据类型组成的列表

table.col_values(colx, start_rowx=0, end_rowx=None)   #返回由该列中所有单元格的数据组成的列表

4、单元格的操作

table.cell(rowx,colx)   #返回单元格对象

table.cell_type(rowx,colx)    #返回单元格中的数据类型

table.cell_value(rowx,colx)   #返回单元格中的数据
  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老板来碗小面加蛋~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值