通过程序操作excel表格是编程中比较常见的操作,python本身不能直接操作excel,需要安装第三方的模块来实现excel的操作。
Python中可以操作excel模块主要有:
1、 xlrd 模块实现exlcel表格读取
2、 xlwd 模块实现excel表格创建和写入
下面主要以xlrd和xlwd模块为例,给大家分享下这两个模块的使用。
一、 模块安装
使用模块前,需要提前在电脑上进行安装,如果是在线安装的话,需要确保你的电脑能够上网。
二、 excel表格读取
提前在我的电脑D盘根目录下创建了一个名为test的excel表格,其内容如下:
2.1 导入模块并打开excel文档
import xlrd # 导入xlrd 模块 # 读取指定路径的excel文档,返回一个工作簿对象 workbook = xlrd.open_workbook("test.xlsx") print(workbook) #
由于一个工作簿文档里可能包含多个sheet,对工作簿中的sheet_names方法来获取当前有哪些sheet。
import xlrd # 导入xlrd 模块 # 读取指定路径的excel文档,返回一个工作簿对象 workbook = xlrd.open_workbook("test.xlsx") sheet_lst = workbook.sheet_names() # 打印当前的工作表的名称,以列表形式返回 print(sheet_lst) # ['Sheet1']
2.2 读取指定sheet表的内容
对于工作簿对象,通过调用sheet_by_name或sheet_by_index属性来获取指定sheet。
# encoding:utf-8 import xlrd # 导入xlrd 模块 # 读取指定路径的excel文档,返回一个工作簿对象 workbook = xlrd.open_workbook("test.xlsx") sheet_lst = workbook.sheet_names() # 打印当前的工作表的名称,以列表形式返回 tp = workbook.sheet_by_name(sheet_lst[0]) # 获取sheet对象 tp2 = workbook.sheet_by_index(0)
要获取指定sheet对象的行数和列表可以使用nrows和ncols来获取。
tp = workbook.sheet_by_name(sheet_lst[0]) # 获取sheet对象 # 获取选定sheet的总行数 print(tp.nrows) # 获取指定sheet的总列数 print(tp.ncols)
打印指定sheet中的所有内容
使用行列索引
# 打印sheet所有的内容,可以把表格内容看做一个二维数组 for i in range(tp.nrows): for j in range(tp.ncols): print(tp.row(i)[j].value,end=" ") print() tp2 = workbook.sheet_by_index(0)
使用单元格
for i in range(tp.nrows): for j in range(tp.ncols): print(tp.cell(i,j).value,end=" ") print()
姓名 年龄 数学 语文 张三 15.0 92.0 93.0 李四 16.0 93.0 90.0 王五 4.0 87.0 89.0
三、 创建一个excel表
3.1 创建一个sheet表
生成Workbook对象并向其添加一个表见下例:
import xlwt # 创建一个工作簿 workbook = xlwt.Workbook() # 在工作簿中添加一表,表名为sheet1 sheet = workbook.add_sheet("sheet1")
3.2 向刚添加的sheet1表写入内容
# 创建一个工作簿 workbook = xlwt.Workbook() # 在工作簿中添加一表,表名为sheet1 sheet = workbook.add_sheet("sheet1", cell_overwrite_ok=True) sheet.write(0,0,"姓名") sheet.write(0,1,"年龄") sheet.write(0,2,"成绩") workbook.save("test_1.xls")
程序运行完,在d盘的根目录下打开test1文件如下图所示,write方法中的第一个参数指定行索引,第二个参数指定列索引,第三个数指定要写入的数据。
3.3 设置写入单元格的字体大小,颜色和字体类型
import xlwt # 创建一个工作簿 workbook = xlwt.Workbook() # 在工作簿中添加一表,表名为sheet1 sheet = workbook.add_sheet("sheet1", cell_overwrite_ok=True) # 为样式创建字体 font = xlwt.Font() # 字体类型 font.name = "微软雅黑" # 字体大小,11为字号,20为衡量单位 font.height = 22 * 11 # 字体颜色见 font.colour_index = 2 font.bold = True # 字体加粗 style = xlwt.XFStyle() style.font = font # 设置列宽 sheet.col(0).width = 11*200 sheet.write(1,0,"姓名",style) sheet.write(1,1,"年龄") sheet.write(1,2,"成绩") workbook.save("test_1.xls")
执行结果如下:
颜色值表如下:
import xlwt # 创建一个工作簿 workbook = xlwt.Workbook() # 在工作簿中添加一表,表名为sheet1 sheet = workbook.add_sheet("sheet1", cell_overwrite_ok=True) # 为样式创建字体 font = xlwt.Font() # 字体类型 font.name = "微软雅黑" # 字体大小,11为字号,20为衡量单位 font.height = 22 * 11 # 字体颜色见 font.colour_index = 2 font.bold = True # 字体加粗 borders = xlwt.Borders() # 为样式创建边框 borders.left = 6 borders.right = 6 borders.top = 6 borders.bottom = 6 style = xlwt.XFStyle() style.font = font style.borders = borders # 设置列宽 sheet.col(0).width = 11 * 200 sheet.write(0, 0, "姓名", style) sheet.write(0, 1, "年龄", style) sheet.write(0, 2, "成绩", style) workbook.save("test_1.xls")