Python操作Excel的模块有很多,并且各有优劣,不同模块支持的操作和文件类型也有不同。下面是各个模块的支持情况:
- xlwt:xlwt 写入.xls文件
- xlwings:xlwings 读取写入Excel文件
- openpyxl:openpyxl 读取写入.xlsx文件
一、安装
pip install xlrd
二、基本使用
import xlrd
workbook = xlrd.open_workbook('excel2.xls') #打开Excel文件,并返回Workbook对象
sheet = workbook['sheet1'] #获取工作表
for row in range(1,sheet.nrows): #获取每行数据
print(sheet.row_values(row,1))
for col in range(1, sheet.ncols): #获取每列数据
print(sheet.col_values(col, 1))
import xlrd
with xlrd.open_workbook('excel2.xls') as workbook:
sheet = workbook['sheet1'] #获取工作表
for row in range(1,sheet.nrows):
print(sheet.row_values(row,1))
for col in range(1, sheet.ncols):
print(sheet.col_values(col, 1))
三、方法及属性
- xlrd.open_workbook(filename, formatting_info=False, on_demand=False, ragged_rows=False) 打开 Excel 文件并返回一个 Workbook 对象
import xlrd ''' filename:Excel 文件的路径或文件对象。 formatting_info:是否读取单元格的格式信息,默认为 False。 on_demand:是否在需要时才加载工作表,默认为 False,即一次性加载所有工作表。 ragged_rows:是否允许不完整的行,默认为 False。 ''' workbook = xlrd.open_workbook('excel2.xls') #打开Excel文件,并返回Workbook对象 sheet = workbook['sheet1'] #获取工作表
- xlrd.xldate_as_datetime(xldate, datemode) 将 Excel 中的日期值转换为datetime 对象
import xlrd workbook = xlrd.open_workbook('excel2.xls') sheet = workbook['sheet1'] #获取工作表 date_value = sheet.cell_value(0, 0) ''' 将日期值转换为 datetime 对象 xldate:Excel 中的日期值,通常是一个浮点数。 datemode:日期模式,用于解释 Excel 中的日期值。默认为xlrd.XL_DATEMODE_1900 workbook.datemode 表示 Excel 文件的日期模式,xlrd.XL_DATEMODE_1900或xlrd.XL_DATEMODE_1904 xlrd.XL_DATEMODE_1900 表示使用 1900 年日期模式 xlrd.XL_DATEMODE_1904 表示使用 1904 年日期模式 ''' date = xlrd.xldate_as_datetime(date_value, workbook.datemode) print(date) # 输出转换后的日期
- workbook.datemode 表示 Excel 文件的日期模式
- workbook.nsheets 返回工作簿中的工作表数量
- workbook.sheet_names() 方返回工作簿中所有工作表的名称列表
- workbook.sheet_by_name(sheet_name) 根据工作表名称获取工作表对象
- workbook.sheet_by_index(sheet_index) 根据工作表索引获取工作表对象
- workbook.release_resources() 释放资源并使用del语句删除工作簿对象,从而关闭文件
- sheet.nrows 返回工作表中的行数
- sheet.ncols 属返回工作表中的列数
- sheet.row_values(rowx, start_colx=0, end_colx=None) 返回指定行的数据列表
- sheet.col_values(colx, start_rowx=0, end_rowx=None) 返回指定列的数据列表
- sheet.cell(rowx, colx) 返回指定行列位置的单元格对象
import xlrd workbook = xlrd.open_workbook('excel2.xls') #打开Excel文件,并返回Workbook对象 sheet = workbook['sheet1'] #获取工作表 ''' 返回单元格的数据类型 xlrd.XL_CELL_TEXT:文本本类型的单元格 xlrd.XL_CELL_EMPTY:空单元格 xlrd.XL_CELL_NUMBER:数字类型的单元格 xlrd.XL_CELL_DATE:日期类型的单元格 xlrd.XL_CELL_BOOLEAN:布尔类型的单元格 xlrd.XL_CELL_ERROR:错误类型的单元格 xlrd.XL_CELL_BLANK:空白单元格 ''' print(sheet.cell(1,1).ctype) print(sheet.cell(1,1).value) #返回单元格的值
- sheet.cell_value(rowx, colx) 返回指定行列位置的单元格值
- sheet.sheet_loaded(sheet_name_or_index) 检查指定的工作表是否已加载
- sheet.unload_sheet(sheet_name_or_index) 卸载指定的工作表,释放内存
- sheet.cell_type(rowx, colx) 返回指定行列位置的单元格数据类型
- sheet.cell_xf_index(rowx, colx) 返回指定行列位置的单元格的样式索引
- sheet.row(rowx) 返回指定行的 Row 对象,用于获取行的其他属性和方法
- sheet.col(colx) 返回指定列的 Column 对象,用于获取列的其他属性和方法