在爬虫开发中,我们主要关注Excel文件的读写,不会过多关心Excel中的一些样式。如果想要读写 Excel文件,需要借助到两个库xlrd和xlwt,其中xlrd是用于读的,xlwt是用于写的,安装命令如下:
pip install xlrd
pip install xlwt
===============================================
打开Excel文件:
import xlrd
workboook = xlrd.open("成绩表")
获取Sheet:
# 获取所有sheet的名字
sheet_names = workbook.sheet_names()
# 根据索引获取指定的sheet对象:
sheet = workbook.sheet_by_index(1)
# 根据名称获取指定的sheet对象
sheet = workbook.sheet_by_name("2班")
# 获取所有的sheet对象
sheets = workbook.sheets()
# 获取指定sheet的行数和列数
sheet = workbook.sheet_by_index(0)
print({"rows": sheet.nrows, "cols": sheet.ncols})
获取Cell及其属性:
from xlrd.sheet import Cell
sheet = workbook.sheet_by_index(0)
# 1.sheet.cell(row,col):获取指定行和列的cell对象
cell_01 = sheet.cell(1, 1)
# 2. sheet.row_slice(row,start_col,end_col):获取指定行的某几列的cell对象
cells_01 = sheet.row_slice(1, 1, 4)
for cell in cells_01:
print(cell.value)
# 3. sheet.col_slice(col,start_row,end_row):获取指定列的某几行的cell对象。
cells_02 = sheet.col_slice(0, 1, sheet.nrows)
for cell in cells_02:
print(cell.value)
# 4. sheet.cell_value(row,col):获取指定行和列的值。
cell_value = sheet.cell_value(1, 1)
# 5. sheet.row_values(row,start_col,end_col):获取指定行的某几列的值。
cell_values_01 = sheet.row_values(1, 1, sheet.ncols)
# 6. sheet.col_values(col,start_row,end_row):获取指定列的某几行的值。
cell_values_02 = sheet.col_values(1, 1, sheet.nrows)
Cell的数据类型:
- xlrd.XL_CELL_TEXT(Text):文本类型。
- xlrd.XL_CELL_NUMBER(Number):数值类型。
- xlrd.XL_CELL_DATE(Date):日期时间类型。
- xlrd.XL_CELL_BOOLEAN(Bool):布尔类型。
- xlrd.XL_CELL_EMPTY:空白数据类型。
==============================================
写入Excel文件
步骤:
- 导入xlwt模块。
import xlwt
- 创建一个Workbook对象。
workbook = xlwt.Workbook()
- 创建一个Sheet对象。
sheet = workbook.add_sheet("sheeet_1")
- 把数据写入到Sheet下指定行和列中。
如果想要在原来workbook对象上添加新的cell,那么需要调用put_cell来添加。
import random
headers = ['姓名', '语文', '英语', '数学']
for index, header in enumerate(headers):
sheet.write(0, index, header)
names = ['张三', '李四', '王五']
for index, name in enumerate(names):
sheet.write(index+1, 0, name)
for row in range(1, 4):
for col in range(1, 4):
sheet.write(row, col, random.randint(1, 100))
- 保存成 Excel文件。
workbook.save("成绩表1.xls")