1.对于Excel后缀名为.xls的文件
首先明确Excel文件的概念。
创建了一个Excel文件,就是创建一个工作簿。
一个工作簿里可以包含多个工作表。
工作表里的单元格可以通过行号列号来确定。行号列号在程序上从0开始。
操作xls后缀的Excel文件,首先需要安装xlrd和xlwd模块。xlrd是读取Excel的模块,xlwd是创建写入。
pip install xlrd #安装xlrdpip install xlwd
然后在程序中导入。
读取xls文件
import xlrdimport xlwtimport os'''读取Excel文件'''#获取Excel所在的目录fileDir = os.path.join(os.getcwd(),'files')#获取工作簿对象workbook = xlrd.open_workbook(os.path.join(fileDir,'data.xls'))#获取所有的工作表的名字,得到一个名字的列表sheets = workbook.sheet_names()#通过名字来获得对应的工作表,这里是获取第一张表sheet = workbook.sheet_by_name(sheets[0])#获取表中的数据,这里是一行一行读取,如有其它用途可存入相应的数据结构for row in range(sheet.nrows): #sheet.nrows获取当前表有数据的行数 for col in range(sheet.ncols): #sheet.ncols获取当前表有数据的列数 print(sheet.cell_value(row,col),end='') #cell_value() 获取单元格的值,第一个参数为行,第二个为列 print()
创建并写入xls文件
'''创建并写入Excel文件'''#创建工作簿对象workbook = xlwt.Workbook()#创建工作表对象sheet = workbook.add_sheet('工作表名字')#向单元格中写入内容for row in range(10): #工作表有10行 for col in range(5): #5列 sheet.write(row,col,row+col) #write() 写入数据,第一个参数是行数,第二个是列数,第三个是值#保存创建的工作簿fileDir = os.path.join(os.getcwd(),'files')workbook.save(os.path.join(fileDir,'test.xls'))
2.操作Excel文件后缀名为xlsx
需要安装openpyxl模块
pip install openpyxl
在程序中导入。
写入xlsx文件
import openpyxlimport os'''创建并写入Excel文件'''#创建工作簿对象workbook = openpyxl.Workbook()#获取创建工作簿之后默认生成的工作表对象sheet = workbook.active#创建工作表对象# sheet = workbook.create_sheet() #创建工作表,第一个参数为表名,第二个参数为表的位置,0为最前,-1为倒数第二#向工作表中写入数据#一般excel表格都有一个表头,假设表头为titlestitles = ['姓名','年龄','性别','城市']#把城市写入工作表,在第一行写入需要4列#xlsx文件行和列从1开始,与xls文件不同for col in range(1,len(titles) + 1): sheet.cell(1,col,titles[col - 1]) #cell()向表格写入内容,第一个参数为行,第二个为列,第三个为值#写入数据datas = [ ['张三',22,'男','北京'], ['翠花',18,'女','上海'], ['王五',12,'男','深圳']]for row in range(2,len(datas) + 2): for col in range(1,len(datas[0]) + 1): sheet.cell(row,col,datas[row - 2][col - 1])#保存工作簿fileDir = os.path.join(os.getcwd(),'files')workbook.save(os.path.join(fileDir,'testfile.xlsx')) #save()保存。参数为文件路径+文件名
读取xlsx文件
#获取工作簿对象fileDir = os.path.join(os.getcwd(),'files')workbook = openpyxl.load_workbook(os.path.join(fileDir,'testfile.xlsx'))#获取工作表对象sheet = workbook.worksheets[0] #获取第一个工作表#读取工作表for row in range(1,sheet.max_row + 1): # .max_row获取工作表有内容的最大行数 for col in range(1,sheet.max_column + 1): # .max_column获取工作表有内容的最大列数 print(sheet.cell(row,col).value,end='') print()
以上可以解决基础的读写问题,可以根据工作的实际情况来添加逻辑代码,完成工作。Python学的好,下班晚不了。