一、模块xlrd-读取excel
1.1 打开excel
import xlrd #导入xlrd模块myWorkbook=xlrd.open_workbook('D:\\Daisy\\testData.xls') #打开excel
1.2 打开sheet
# 以下方法之一 mySheets = myWorkbook.sheets() #获取工作列表,获取表格中所有sheet,通过索引顺序获取mySheet = mySheets[0] #所有sheet中的第一个sheetmySheet = myWorkbook.sheet_by_index(0) #通过索引顺序获取,获取到表格中第一个sheetmySheet = myWorkbook.sheet_by_name(u'Sheet1') #通过名称获取,获取到表格中的sheet名称为Sheet1的sheet
1.3 读取 - 行/列数
nrows = mySheet.nrows #获取sheet中的行数ncols = mySheet.ncols #获取sheet中的列数
1.4 读取 - 一行/列数据
myrow = mySheet.row_values(i) #i为行数,从0开始计数,返回list对象mycol = mySheet.col_values(i) #i为列数,从0开始计数,返回list对象
1.5 读取 - 单元格数据
mycellvalue = mySheet.cell(i,j).value #获取单元格的数据,i为行数,j为列数myCellValue = mySheet.cell_value(i, j) #直接获取单元格数据value=mySheet.cell_value(1,0).encode('utf-8') #以utf-8格式读取
二、模块xlwt-生成excel
2.1 创建excel
import xlwt #导入xlwt模块myWorkbook=xlwt.Workbook() #创建工作表
2.2 添加sheet
mySheet = myWorkbook.add_sheet('Sheet'Name) #添加工作表
2.3 cell写入值
mySheet.write(i, j, 'abcdefg') #在i行j列写入值abcdefg
2.4 保存excel
myWorkbook.save('excelFile.xls')
注意:xlrd和xlwt处理的是xls文件,单个sheet最大行数是65535,如果有更大需要的,建议使用openpyxl函数,最大行数达到1048576
三、模块xlsxwriter-生成excel
3.1 创建excel
import xlsxwriter #导入模块workbook = xlsxwriter.Workbook('hello.xlsx') #生成表名及路径
3.2 添加sheet
worksheet = workbook.add_worksheet() #方法里可以写入sheet名字,但不能含中文
3.3 按行写入
worksheet.write_row('A1', ['a','b','c'], bold) #从A1处开始写入一行列表,并加粗处理 worksheet.write_row(i, j, ['a','c','d']) #从i行j列写入一行列表,行列都是从0开始的
3.4 写入cell值
worksheet.write('B5', 'hello world')
worksheet.write(i, j, 'hello world')
3.5 关闭表
workbook.close()
四、模块xlutils-更改表内容
4.1 拷贝表
import xlrdfrom xlutils.copy import copywb = copy(xlrd.open_workbook('weng.xls')) #拷贝表
4.2 获取表单
ws = wb.get_sheet(0) #获取第一个表单
4.3 改变cell值
ws.write(0, 0, 'changed!') #改变(0,0)的值
4.4 保存文件
wb.save('weng.xls') #保存文件
五、模块openpyxl-读取并修改excel
5.1 获得/创建excel
from openpyxl import load_workbook, Workbookexcel = openpyxl.Workbook() #创建新的excel,默认创建一个sheetexcel = openpyxl.load_workbook("hello.xlsx") #导入已经存在的excel
5.2 获取sheet
sheet = excel['sheetname'] #获取sheet sheet = excel.worksheets[0] #返回第一个sheetsheet = create_sheet(title,index) #创建一个空的表格,index=0插入到开头,返回sheet对象sheet = excel.active #获取当前活跃的Worksheet,返回sheet对象 excel.remove_sheet(excel["mysheet"]) #删除sheetexcel.copy_worksheet(excel["mysheet"]) #在workook内拷贝表格excel.worksheets #以列表形式返回所有worksheet,返回sheet对象列表excel.sheetnames #获取工作簿中的表(列表),返回sheet名字列表
5.3 获取行/列数
max_row = sheet.max_row #返回表格的最大行数min_row = sheet.min_row #返回表格的最小行数max_col = sheet.max_column #返回表格的最大列数min_col = sheet.min_column #返回表格的最小列数
5.4 按行/列获取数据
col_content = sheet['C'] #返回C列的内容,也是元祖形式Cell对象col_content = sheet['A:C'] #返回A列到C列(包含C列)的Cell对象,元祖形式,一列一列取值row_content = sheet[10] #返回第10行数据row_content = sheet[10:12] #返回第10行到第12行数据
all_row_obj = sheet.rows #按行获取所有对象,返回对象格式:((x,x),(x,x),(x,x))all_col_obj = sheet.columns #按列获取所有对象for i in all_row_obj: for j in i: print j.value
iter_rows(min_row=1,max_row=4,min_col=2,max_col=4) #按行获取固定数量的对象iter_columns(min_row=1,max_row=4,min_col=2,max_col=4) #按列获取固定数量的对象for i in iter_rows(1,2,1,2) for j in i: print j.value
5.5 表格末尾添加数据
sheet.append([1,1,1]) #在表格最后一行后面添加一行数据
5.6 获取cell值
#单个cell的值sheet['A1'].valuesheet.cell(row=1,column=2).value#多个cell的值cell_range = sheet['A1':'C2'] 返回一个元祖,元祖内容是两行三列Cell对象,而非cell的value
5.7 获取cell行/列号
excel['sheet1'].cell(row=1,column=2).row #返回行号1excel['sheet1'].cell(row=1,column=2).column #返回列名Bexcel['sheet1'].cell(row=1,column=2).coordinate #返回坐标B1
5.8 给cell赋值
sheet[“A3”] = "ABC" sheet["A3"].value = "ABC"sheet.cell(row=1,column=2).value = "ABC"
5.9 保存excel
excel.save("test.xlsx")