使用Python的xlrd和xlwt操作Excel详解
作者:程序员老华
这篇文章主要介绍了使用Python的xlrd和xlwt对比操作Excel详解,xlrd和xlwt是python的第三方库,xlrd模块实现对excel文件内容读取,xlwt模块实现对excel文件的写入,需要的朋友可以参考下
1. 操作Excel库(xlrd和xlwt)对比
xlrd :可处理Excel后缀“.xls”、“.xlsx”,只能读取;
xlwt :可处理Excel后缀“.xls”,可写入、修改、保存、样式调整、插入图片。
2. xlrd读取Excel
首先在程序相同目录创建 “test.xls”文件,并创建多个 sheet。
注意: 直接创建 .xls文件,即使改了扩展命,后续操作仍会报错。
2.1 xlrd操作方法汇总
xlrd对.xls文件操作
函数语法 | 作用说明 | |
Excel操作 | wb = xlrd.open_workbook(path) | 打开文件 |
wb.sheet_names() | 获取所有的表名 | |
wb.sheet_by_index(索引) 或 wb.sheet_by_name('Sheet表明') | 指定Sheet | |
Sheet表的行操作 | sheet.nrows() | 获取sheet表总函数 |
sheet.row(1) 或 sheet.row_slice(1) | 返回该行中所有单元格对象组成的列表,列表内是键值对,例如:['列名1':'值','列名2':'值', ...] | |
sheet.row_values(rowx, start_colx=0, end_colx=None) | 返回指定行的所有单元格数值组成的列表 | |
sheet.row_len(rowx) | 返回指定行的有效长度 | |
Sheet表的列操作 | sheet.ncols() | 返回指定sheet表的有效列数 |
sheet.col(1) 或 sheet.clo_slice(1) | 返回该列中所有的单元格对象组成的列表,列表内是键值对,例如:['列名1':'值', '列明2':'值', ...] | |
sheet.col_values(colx, start_colx=0, end_colx=None) | 返回指定列的所有单元格数值组成的列表,例如:['列名':'值1', '值2',...] |
2.2 xlrd用法举例
import xlrd #1.打开文件 wb = xlrd.open_workbook('./test.xls') print(wb) #输出:<xlrd.book.Book object at 0x00000192ADAA57F0> #2.获取所有表名 sheet_name_list = wb.sheet_names() print(sheet_name_list) #输出:['Sheet1', 'Sheet2', 'Sheet3'] #3.指定sheet表 #3.1索引顺序获取 sheet_1 = wb.sheet_by_index(0) print(sheet_1) #输出:Sheet 0:<Sheet1> #3.2名称获取 sheet_2 = wb.sheet_by_name('Sheet1') print(sheet_2) #输出:Sheet 0:<Sheet1> #4.对sheet行操作 #4.1获取sheet表总行数:sheet.nrows print('Excel表中数据总行数为:',sheet_1.nrows) #Excel表中数据总行数为: 4 #4.2返回由该行中所有的单元格对象组成的列表,列表内是键值对:sheet.row(行数)或者sheet.row_slice(行数) print('方法1:',sheet_1.row(1),'方法2:',sheet_1.row_slice(1)) #输出:方法1: [text:'小明', number:165.0, number:12.0, number:50.0, number:80.0] 方法2: [text:'小明', number:165.0, number:12.0, number:50.0, number:80.0] #4.3返回指定行的所有单元格数值组成的列表:sheet.row_values(rowx, start_colx=0, end_colx=None) print(sheet_1.row_values(1)) #输出:['小明', 165.0, 12.0, 50.0, 80.0] #4.4返回指定行的有效长度:sheet.row_len() print(sheet_1.row_len(1)) #输出:5 print('-'*40) #5.读取整个表 for i in range(sheet_1.nrows): print(sheet_1.row_values(i)) # 输出: # ---------------------------------------- # ['name', 'high', 'age', 'weight', 'score'] # ['小明', 165.0, 12.0, 50.0, 80.0] # ['小红', 160.0, 13.0, 35.0, 85.0] # ['小浪', 170.0, 23.0, 65.0, 100.0] #6.对Sheet表的列进行操作 #6.1返回指定sheet表的有效列数:sheet.ncols print('Excel表中数据总列数为:',sheet_1.ncols) #输出:Excel表中数据总列数为: 5 #6.2返回指定列中所有的单元格组成的列表,列表内是键值对:sheet.col(列数) 或者 sheet.col_slice(列数) print('方法1:',sheet_1.col(1),'方法2:',sheet_1.col_slice(1)) #输出:方法1: [text:'high', number:165.0, number:160.0, number:170.0] 方法2: [text:'high', number:165.0, number:160.0, number:170.0] #6.3返回指定列的所有单元格组成的列表:sheet.col_values(colx, start_colx=0, end_colx=None) #6.3.1带列名 print(sheet_1.col_values(0)) #输出:['name', '小明', '小红', '小浪'] #6.3.2不带列名 print(sheet_1.col_values(0,1)) #输出列名:['小明', '小红', '小浪'] print('-'*40) #7.读取全部表 for i in range(sheet_1.ncols): print(sheet_1.col_values(i)) # 输出: # ---------------------------------------- # ['name', '小明', '小红', '小浪'] # ['high', 165.0, 160.0, 170.0] # ['age', 12.0, 13.0, 23.0] # ['weight', 50.0, 35.0, 65.0] # ['score', 80.0, 85.0, 100.0]
3. xlwt写入Excel
xlwt 模块是Python第三方库,可以将数据写入到 Excel 工作簿中。
目前支持写入 .xls 和 .xlsx 两种格式
3.1 xlwt操作方法汇总
函数格式 | 功能描述 |
xlwt.Workbook(encoding='utf8') | 创建Excel表对象 |
worksheet = workbook.add_sheet('Sheet1') | 新建Sheet对象 |
worksheet.write(0, 0, 'Python') | 写入数据到注定单元格。第一个参数是行数,第二个参数是列数,第三个参数是要写入的字符串或数字 |
workbook.save('a.xlsx') | 保存文件,目前已支持写入 .xls 个 .xlsx两种格式 |
xlwt.Font() | 设置字体 |
xlwt.Pattern() | 设置背景 |
xlwt.Borders() | 设置边框 |
xlwt.Alignment | 设置对准 |
3.2 用法举例
3.2.1 xlwt写入单个数据
创建一个Excel表格,并在(0,0)位置写入“Python”,并使用两种方式进行保存文件。
注意: Office并不能打开 .xlsx 文件,所以需要 WPS 打开。
import xlwt #1.创建Excel表对象 workbook = xlwt.Workbook(encoding='utf8') #2.新建Sheet表 worksheet = workbook.add_sheet('Sheet1') #3.写入数据到指定单元格 worksheet.write(0, 0, 'Python') #4.保存文件份两种格式 workbook.save('a.xls') workbook.save('a.xlsx')
运行结果:
3.2.2 xlwt写入多个数据
import xlwt data = [('小明','20','男'),('小红','21','女'),('小浪','22','男')] #1.创建Excel表对象 workbook = xlwt.Workbook(encoding='utf8') #2.新建Sheet表 worksheet = workbook.add_sheet('Sheet1') #3.自定义列名 col_name = ('姓名','年龄','性别') #4.将列属性元组col_name写进Sheet1表单中第一行 for i in range(len(col_name)): worksheet.write(0,i,col_name[i]) #5.将数据写入Sheet1表单中 for i in range(len(data)): In_data = data[i] for j in range(len(col_name)): worksheet.write(i+1,j,In_data[j]) #6保存文件 workbook.save('b.xls')
运行结果:
3.2.3 xlwt设置列宽和行高
import xlwt data = [('小明','20','男'),('小红','21','女'),('小浪','22','男')] #1.创建Excel表对象 workbook = xlwt.Workbook(encoding='utf8') #2.新建Sheet表 worksheet = workbook.add_sheet('Sheet1') #3.自定义列名 col_name = ('姓名','年龄','性别') #4.将列属性元组col_name写进Sheet1表单中第一行 for i in range(len(col_name)): worksheet.write(0,i,col_name[i]) #5.将数据写入Sheet1表单中 for i in range(len(data)): In_data = data[i] for j in range(len(col_name)): worksheet.write(i+1,j,In_data[j]) #6.设置列宽和行高 #6.1设置列宽 for i in range(len(col_name)): worksheet.col(i).width = 256*20 # 256为衡量单位,20表示20个字符宽度 worksheet.row(i+1).height_mismatch = True #设置行高第一步 worksheet.row(i+1).height = 1600 #设置行高第二步 #6保存文件 workbook.save('b.xls')
运行结果:
3.2.4 xlwt设置单元格风格
def body_style(): #1.创建一个样式对象,初始化样式style style = xlwt.XFStyle() #创建 Style对象 #2.字体风格设置 font = xlwt.Font() #创建 Font对象 font.name = 'Simon' #设置字体类型,宋体 font.colour_index = 4 #设置字体颜色 font.height = 20*12 #设置字体大小,12为字号,20为衡量值 font.bont = True #设置体字加粗 font.underline = True #下划线 font.italic = True #斜体字 #3.背景设置 pattern = xlwt.Pattern() pattern.pattern = xlwt.Pattern.SOLID_PATTERN # 可选参数:NO_PATTERN, SOLID_PATTERN, 或 0x00-0x12之间的数 pattern.pattern_fore_colour = 4 #设置背景颜色 #4.边框设置 borders = xlwt.Borders() #创建边框对象,#.DASHED:虚线;.NO_LINE:没有 #4.1上下左右添加边框 borders.left = 1 borders.right = 1 borders.top = 1 borders.bottom = 1 #4.2设置边框颜色 borders.left_colour = 2 borders.right_colour = 2 borders.top_colour = 2 borders.bottom_colour = 2 #5.位置设置 alignment = xlwt.Alignment() alignment.horz = 1 #设置水平位置,0是左对齐,1是居中,2是右对齐 alignment.wrap = 1 #设置自动换行 #6.设置好后,全局加入到style中 style.alignment = alignment style.font = font style.borders = borders return style
应用方法
- 不带格式的: sheet.write(row, colum, i)
- 带格式的: sheet.write(row, colim, i, style)
到此这篇关于使用Python的xlrd和xlwt操作Excel详解的文章就介绍到这了,更多相关Python的xlrd和xlwt操作Excel内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!