python 操做 excel 的 4 个工具包以下python
注意,前三个库都只能操做 .xls,不能操做 .xlsx
数据库
这4个工具包均可以直接使用pip进行下载:工具
pip install xlrd
pip install xlwt
pip install xlutils
pip install openpyxl
xlwt 写 excel文件(.xls) 字体
import xlwt wbk = xlwt.Workbook(encoding="utf-8",cell_overwrite_ok=True) # 建立xls文件,可被复写 datasheet = wbk.add_sheet("sheet1") # 建立一个名为sheet1的sheet # 设置单元格的样式,如字体、背景颜色等等 style = xlwt.easyxf('pattern: pattern solid, fore_colour red') # 语法:write(n, m, "aaa", [style])===>第n行,第m列,内容, [样式](样式能够不指定,不指定即为默认样式) datasheet.write(0, 0, "aaa", style) datasheet.write(0, 1, "bbb") datasheet.write(1, 2, "ccc") datasheet.write(2, 3, "ddd") wbk.save("数据库信息.xls") # 保存
xlrd 读 excel(.xls)spa
import xlrd data = xlrd.open_workbook('excelFile.xls') # 打开Excel文件读取数据 # 获取sheet the_sheet = data.sheets()[0] # 经过索引顺序获取(0是第一个sheet) the_sheet = data.sheet_by_index(0) # 经过索引顺序获取,同上 the_sheet = data.sheet_by_name(u'Sheet1') # 经过名称获取 # 获取数据,返回值为list data_list.row_values(1) # 第二行数据(支持负索引取值) data_list.col_values(1) # 第二列数据 # 得到行数和列数。 rows=sheet_1_by_name.nrows # 行数 cols=sheet_1_by_name.ncols # 列数 # 输出每一行数据 for i in range(rows): print(the_sheet.row_values(i)) # 得到指定单元格数据的三种方式 data=the_sheet.cell(0,0).value # 第一行第一列 data=the_sheet.row(0)[0].value # 第一行第一列 data=the_sheet.col(0)[0].value # 第一列第一行
修改excelexcel
row=0 # 修改第一行 col=0 # 修改第一列 # ctype 0:empty,1:string,2:number,3:date,4:boolean,5:error cell_type=1 # 修改类型 value='Hello,Excel' # 修改内容 cell_A1=the_sheet.cell(0,0).value # 获取第一行第一列的值 format=0 the_sheet.put_cell(row,col,cell_type,value,format) # 修改操做 cell_A1=the_sheet.cell(0,0).value # 再看一下,值已被改
xlutils 追写 excelcode
xlwt 只能建立一个全新的 excel 文件,而后对这个文件进行写入内容以及保存。orm
可是大多数状况下咱们但愿的是读入一个 excel 文件,而后进行修改或追加,这个时候就须要 xlutils 了。对象
下面的 demo 是给一个 excel 文件追加内容:blog
from xlrd import open_workbook from xlutils.copy import copy rexcel = open_workbook("collection.xls") # 用wlrd提供的方法读取一个excel文件 rows = rexcel.sheets()[0].nrows # 用wlrd提供的方法得到如今已有的行数 excel = copy(rexcel) # 用xlutils提供的copy方法将xlrd的对象转化为xlwt的对象 table = excel.get_sheet(0) # 用xlwt对象的方法得到要操做的sheet values = ["1", "2", "3"] row = rows for value in values: table.write(row, 0, value) # xlwt对象的写方法,参数分别是行、列、值 table.write(row, 1, "haha") table.write(row, 2, "lala") row += 1 excel.save("collection.xls") # xlwt对象的保存方法,这时便覆盖掉了原来的excel
openpyxl 模块默承认读可写,若只须要读或者写的功能,能够在 open 时指定 write_only 或 read_only 为 True
import openpyxl data = openpyxl.load_workbook('excelFile.xls') # 可读可写 data = openpyxl.load_workbook('excelFile.xls', read_only=True) # 只读 data = openpyxl.load_workbook('excelFile.xls', write_only=True) # 只写