Python 中的 xlrd 和 xlwt 模块的使用

当 Python 处理 excel表格 时,便会用到 xlrd 和 xlwt 模块,即 xlrd 是 读excel,xlwt 是 写excel

1.安装模块

方法1:

点击 File --->  settings --->  Project: unitlied ---> Project Interpreter  ---> 点击加号 ---> 输入想要安装的模块名称

最后点击 Install Package  即可

方法2:

pip install xlrd
pip install xlwt

2.在C盘目录下新建工作簿 file.xsl

 

3.在工作簿中新建两个工作表:学生表 和 员工表

 

3. xlrd 模块的简单使用

(1) 打开excel工作簿文件

# 导入模块
import xlrd

# 打开名为file.xls的Excel工作簿文件
xls_file = xlrd.open_workbook(rb"C:\test\file.xls")

(2).获取所有sheet工作表名称

# 获取工作簿中所有工作表的名称
sheet_name = xls_file.sheet_names()  
print(sheet_name)

(2) 根据下标获取sheet工作表名称

# 获取第一个工作表的名称,下标从0开始
sheet2_name = xls_file.sheet_names()[0]
print(sheet2_name)

(3) 根据sheet索引或者名称,获取sheet内容,同时获取sheet名称、行数、列数

# 导入模块
import xlrd

# 打开名为file.xls的Excel工作簿文件
xls_file = xlrd.open_workbook(rb"C:\test\file.xls")

# 根据sheet索引获取sheet内容,同时获取sheet名称、行数、列数
sheet1 = xls_file.sheet_by_index(0)
print('sheet1名称:{}\nsheet1行数: {}\nsheet1列数: {}'.format(sheet1.name, sheet1.nrows, sheet1.ncols))

# 根据sheet名称获取sheet内容,同时获取sheet名称、行数、列数
sheet2 = xls_file.sheet_by_name('员工表')
print('sheet2名称:{}\nsheet2行数: {}\nsheet2列数: {}'.format(sheet2.name, sheet2.nrows, sheet2.ncols))

 (4) 根据sheet名称获取整行和整列的值

# 导入模块
import xlrd

# 打开名为file.xls的Excel工作簿文件
xls_file = xlrd.open_workbook(rb"C:\test\file.xls")

# 根据sheet名称获取整行和整列的值
sheet1 = xls_file.sheet_by_name('学生表')

print(sheet1.row_values(0))     # 第一行
print(sheet1.col_values(1))     # 第二列

 (5)获取指定单元格的内容

# 导入模块
import xlrd

# 打开名为file.xls的Excel工作簿文件
xls_file = xlrd.open_workbook(rb"C:\test\file.xls")

# 根据sheet名称获取整行和整列的值
sheet2 = xls_file.sheet_by_name('员工表')

# 获取指定单元格的内容
print(sheet2.cell(1,0).value)  # 第2行 第1列
print(sheet2.cell_value(1,0))  # 第2行 第1列  
print(sheet2.row(1)[0].value)  # 第2行 第1列

(6)获取单元格内容的数据类型

# 导入模块
import xlrd

# 打开名为file.xls的Excel工作簿文件
xls_file = xlrd.open_workbook(rb"C:\test\file.xls")

# 根据sheet名称获取整行和整列的值
sheet2 = xls_file.sheet_by_name('员工表')

# 获取单元格内容的数据类型;
# 说明:0:empty   1:string   2:number   3:date  4:boolean  5:error

print(sheet2.cell(1,0).ctype)     # 第2行,第1列内容;姓名
print(sheet2.cell(3,4).ctype)     # 第4行,第5列内容;13827509902
print(sheet2.cell(3,5).ctype)     # 第4行,第6列内容;2014.7.8

4.xlwt模块的简单使用

例1:

# 1.导入模块
import xlwt
# 2.创建一个工作簿文件; encoding:设置编码
workbook = xlwt.Workbook(encoding = 'utf-8')
# 3.创建一个工作表
worksheet = workbook.add_sheet('My Worksheet')
# 4.写入数据;(行, 列, 值)
worksheet.write(1,0, label = 'this is test')
# 5.保存文件
workbook.save('Excel_test.xls')

例2:

# 1.导入模块
import xlwt
# 2.创建工作簿文件
workbook = xlwt.Workbook(encoding = 'ascii')
# 3.创建工作表
worksheet = workbook.add_sheet('My Worksheet')

style = xlwt.XFStyle()      # 初始化样式
font = xlwt.Font()          # 为样式创建字体
font.name = 'Times New Roman'
font.bold = True            # 黑体
font.underline = True       # 下划线
font.italic = True          # 斜体字
style.font = font           # 设定样式

# 4.写入数据
worksheet.write(0, 0, 'Unformatted value')          # 不带样式的写入
worksheet.write(1, 0, 'Formatted value', style)     # 带样式的写入
# 5.保存文件
workbook.save('formatting.xls')                     # 保存文件

(1).设置单元格宽度

# 1.导入模块
import xlwt
# 2.创建工作簿文件
workbook = xlwt.Workbook()
# 3.创建工作表
worksheet = workbook.add_sheet('My Sheet')
# 4.写入数据
worksheet.write(0, 0,'My Cell Contents')

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

# 5.保存文件
workbook.save('cell_width.xls')

(2).输入一个日期到单元格

# 1.导入模块
import xlwt
import datetime
# 2.创建工作簿文件
workbook = xlwt.Workbook()
# 3.创建工作表
worksheet = workbook.add_sheet('My Sheet')

style = xlwt.XFStyle()              # 初始化样式
style.num_format_str = 'M/D/YY'     # 设置日期格式

# 4.写入数据
worksheet.write(0, 0, datetime.datetime.now(), style)
# 5.保存文件
workbook.save('Excel_Workbook.xls')

(3).向单元格添加一个公式

# 1.导入模块
import xlwt
# 2.创建工作簿文件
workbook = xlwt.Workbook()
# 3.创建工作表
worksheet = workbook.add_sheet('My Sheet')
# 4.写入数据
worksheet.write(0, 0, 5)
worksheet.write(0, 1, 2)
worksheet.write(1, 0, xlwt.Formula('A1*B1'))        # A1与B1的乘积
worksheet.write(1, 1, xlwt.Formula('SUM(A1,B1)'))   # A1与B1的和
# 5.保存文件
workbook.save('Excel_Workbook.xls')

(4).为单元格设置背景颜色

# 1.导入模块
import xlwt
# 2.创建工作簿文件
workbook = xlwt.Workbook()
# 3.创建工作表
worksheet = workbook.add_sheet('My Sheet')

# 4.写入数据
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = 3
# 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()
style.pattern = pattern
worksheet.write(0, 0, 'Cell Cont', style)

# 5.保存文件
workbook.save('Excel_Workbook.xls')

综合练习:

需求:
首先excel里有一列数组,现从excel里读取一个数组,进行从小到大排序,然后将排序后的结果写入到另一个excel表格里

分析:
首先必须要知道:通常创建的xls文件叫工作簿
其次,一般新建的excel工作簿文件默认有三个工作表:sheet1,sheet2,sheet3
1.创建excel工作簿文件test.xls,并写入数组

# 2.导入模块
import xlrd,xlwt

# 3.读取工作簿文件的数组内容
xls_file = xlrd.open_workbook(r"C:\test.xls")     # 打开工作簿
xls_sheet = xls_file.sheets()[0]                  # 打开第一个工作表
col_value = xls_sheet.col_values(0)               # 记录第一个工作表的第一列所有值,它以列表的形式存储

# 4.数组排序
list = sorted(col_value)

# 5.创建新的excel工作簿文件
new_xls_file = xlwt.Workbook()      # 创建工作薄
sheet1 = new_xls_file.add_sheet(u'sheet1',cell_overwrite_ok=True)   # 创建sheet1工作表

# 6.写入数据
j = 0
for i in list:
    sheet1.write(j,0,i)             # 竖着写入
    j += 1

#7.保存文件
new_xls_file.save('new_text.xls')   

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值