在处理Excel文件时,Python提供了多个第三方库来帮助开发者读取、写入和修改数据。其中,xlrdxlwtxlutils是一套常用于处理旧版Excel文件(.xls)的库。

xlrd是一个用于读取Excel文件的Python库。它支持Excel 2003及其以前版本的文件格式(.xls)。使用xlrd,你可以轻松提取Excel工作簿中的工作表数据,包括单元格的值、格式和公式。尽管公式通常以字符串的形式返回,而不是计算结果,但这对于需要分析Excel文件中的数据非常有用。

xlrd相对应的是xlwt库,它用于写入Excel文件。特别是,它支持创建和编辑Excel 97-2003工作簿(.xls)格式的文件。通过xlwt,你可以生成新的Excel文件,并向其中添加工作表、单元格数据和格式。

xlutils是一个辅助库,它本身不直接读写Excel文件,而是作为xlrdxlwt之间的桥梁。特别是,xlutils.copy模块提供了一个方法,可以将通过xlrd读取的工作簿对象复制到一个可以通过xlwt修改的新工作簿对象中。这个库的存在使得你可以在读取现有Excel文件的基础上进行修改,并将更改保存为一个新的Excel文件。虽然xlutils不能直接修改原始文件,但它提供了一种在Python中处理Excel文件的灵活方式。

注意,xlrdxlwtxlutils只适合处理旧版Excel文件(.xls对于较新的.xlsx格式,请使用其他库如openpyxl来处理.xlsx文件。

安装

pip install xlrd
pip install xlwt
pip install xlutils

xlrd

xlrd是一个用于读取.xls文件的Python库,以下是它的常用方法

打开Excel文件

from xlrd import open_workbook

wb = open_workbook('example.xls')

获取sheet

一个Excel文件可能包含多个sheet,可以通过以下两种方式获取sheet:

通过索引获取:

sheet = wb.sheets()[0]
sheet = wb.sheet_by_index(0)

通过名称获取:

sheet = wb.sheet_by_name('Sheet1')

你也可以获取excel中所有的sheet的名字

names = wb.sheet_names()

完毕后,可以检查某个sheet是否导入完毕

wb.sheet_loaded(sheet_name or indx)

行操作

读取整行的值(有效数据),返回一个list

row_values = sheet.row_values(0, start_colx=0, end_colx=None) # 读取第一行的值(从0开始计数)

for value in row_values:
	print(value)

获取该sheet中的有效行数

rows_count = sheet.nrows

读取整行的值(有效数据),返回一个list,里面包含了单元格对象

# 有两种办法,用法一致
rows = sheet.row(0) # 读取第一行的值,并返回一个包含单元格对象的列表
# rows = sheet.row_slice(0) # 读取第一行的值,并返回一个包含单元格对象的列表

for row in rows:
    print(row.value)

读取整行的数据类型

rows = sheet.row_types(0, start_colx=0, end_colx=None) # 读取第一行的数据类型,返回一个包含int类型的数组

for row in rows:
    print(row)

返回该行的有效单元格长度

cell_count = sheet.row_len(0) # 计算第一行的有效单元格长度

列操作

读取整列的值(有效数据),返回一个list

col_values = sheet.col_values(0)  # 读取第一列的值(从0开始计数)

for value in col_values:
	print(value)

获取该sheet中的有效

cols_count = sheet.ncols

读取整列的值(有效数据),返回一个list,里面包含了单元格对象

# 有两种办法,用法一致
cols = sheet.col(0) # 读取第一列的值,并返回一个包含单元格对象的列表
# cols = sheet.col_slice(0) # 读取第一列的值,并返回一个包含单元格对象的列表

for col in cols:
    print(col.value)

读取整行的数据类型

cols = sheet.col_types(0, start_colx=0, end_colx=None) # 读取第一行的数据类型,返回一个包含int类型的数组

for col in cols:
    print(col)

单元格操作

读取单元格的值

cell_value = sheet.cell(0, 0).value  # 读取第一行第一列单元格的值

读取单元格中的数据类型

cell_type = sheet.cell_type(0, 0) # 读取第一行第一列单元格的数据类型

读取单元格中的格式

# 获取并打印一些格式信息
font = sheet.cell(0, 0).font
fill = sheet.cell(0, 0).fill
alignment = sheet.cell(0, 0).alignment

print(f"字体名称: {font.name}")
print(f"字体大小: {font.size}")
print(f"字体颜色: {font.color.rgb}")
print(f"填充颜色: {fill.fgColor.rgb if fill.fgColor else '无填充'}")
print(f"水平对齐: {alignment.horizontal}")
print(f"垂直对齐: {alignment.vertical}")

xlwt

xlwt是一个用于写入.xls文件的Python库,以下是它的常用方法

创建Workbook对象

from xlwt import Workbook

wb = Workbook(encoding='utf-8')

创建sheet

sheet = wb.add_sheet('My Worksheet')

写入数据

sheet.write(0, 0, "Value") # 将字符串'Value'写入到第一行第一列的单元格中。

设置样式

from xlwt import Workbook, XFStyle, Font, Borders, Pattern, Alignment, Style

# 创建一个新的Excel
wb = Workbook()

# 添加一个新的工作表
worksheet = wb.add_sheet('Test')

# 创建一个样式对象
style = XFStyle()

# 创建一个字体对象
font = Font()
font.name = 'Arial'
font.bold = True
font.italic = True
font.colour_index = 4# 红色

# 创建一个边框对象
borders = Borders()
borders.left = Borders.THIN
borders.right = Borders.THIN
borders.top = Borders.THIN
borders.bottom = Borders.THIN

# 创建一个背景色对象
pattern = Pattern()
pattern.pattern = Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = Style.colour_map['yellow'] # 黄色背景

# 创建一个对齐方式对象
alignment = Alignment()
alignment.horz = Alignment.HORZ_CENTER# 水平居中
alignment.vert = Alignment.VERT_CENTER# 垂直居中

# 将这些样式应用到之前创建的样式对象上
style.font = font
style.borders = borders
style.pattern = pattern
style.alignment = alignment

# 写入数据到单元格,并应用样式
sheet.write(0, 0, 'Formatted Cell', style)

# 保存Excel
wb.save('test.xls')

保存Excel

wb.save('test.xls')

xlwt保存的.xls文件不会保留原有的样式格式。当你使用xlwt创建一个新的Excel文件或写入数据时,你需要显式地设置所需的样式和格式。

xlutils

xlutils是一个辅助库,可以在读取现有Excel文件的基础上进行修改,并将更改保存为一个新的Excel文件。

xlutils可以将xlrdBook对象复制转换为xlwtWorkbook对象,具体使用时通常导入的是模块中的copy子模块中的copy函数。

from xlrd import open_workbook
from xlutils.copy import copy

# 打开Excel
workbook = open_workbook('test.xls')

# 复制Excel
new_workbook = copy(workbook)

# 获取Excel中的第一个Sheet
# worksheet = new_workbook.get_sheet(0) # 通过索引获取
worksheet = new_workbook.get_sheet("Sheet1") # 通过sheet名称获取

# 写入新的数据
worksheet.write(0, 0, 'New Data')

# 保存Excel
new_workbook.save('test.xls')

在使用get_sheet获取了sheet之后,往后写入数据的操作和xlwt的方法基本一致(因为xlutils是xlrdBook对象复制转换为xlwtWorkbook对象而已),所以和xlwt一样,xlutils保存的.xls文件不会保留原有的样式格式

文章作者: Vsoapmac
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 soap的会员制餐厅
数据分析 python 第三方库 个人分享
喜欢就支持一下吧