一、常用python操作excel模块

  • xlrd
  • csv
  • openpyxl

二、各个模块操作

1、xlrd操作

安装

pip install xlrd

例如excel内容如下,对该excel进行操作

# -*- coding: utf-8 -*- import xlrd def read_excel(): # 打开文件 workbook = xlrd.open_workbook('banwod.xls') # 获取所有sheet print workbook.sheet_names() # [u'sheet1', u'sheet2'] sheet2_name = workbook.sheet_names()[1] # 根据sheet索引或者名称获取sheet内容 sheet2 = workbook.sheet_by_index(0) # sheet索引从0开始,或者根据sheet名称来获得,如下 # sheet2 = workbook.sheet_by_name('Sheet1')#同上 # sheet的名称,行数,列数 print "sheet的名称,行数,列数",sheet2.name,sheet2.nrows,sheet2.ncols # 获取整行和整列的值(数组) rows = sheet2.row_values(2) # 获取第四行内容 cols = sheet2.col_values(2) # 获取第三列内容 print "行" for i in rows: print i, print "列" for i in cols: print i, # 获取单元格内容的几种方式 print sheet2.cell(1,0).value.encode('utf-8') print sheet2.cell_value(1,0).encode('utf-8') print sheet2.row(1)[0].value.encode('utf-8') # 获取单元格内容的数据类型 # print sheet2.cell(1,0).ctype if __name__ == '__main__': read_excel()

输出:


2、csv模块

自带模块,无需安装

import csv with open('egg2.csv', 'wb') as csvfile: spamwriter = csv.writer(csvfile,dialect='excel') spamwriter.writerow(['a', '1', '1', '2', '2']) spamwriter.writerow(['b', '3', '3', '6', '4']) spamwriter.writerow(['c', '7', '7', '10', '4']) spamwriter.writerow(['d', '11','11','11', '1']) spamwriter.writerow(['e', '12','12','14', '3'])

输出:


3、openpyxl模块

pip install openpyxl

多sheet操作,新建sheet、对指定sheet进行操作

import openpyxl def writeExcel(path, value, sheet): ''' :param sheet:sheet的名称 :param path:文件的名字和路径 :param value1: 写入的数据 :return: ''' book = openpyxl.Workbook() sheet1 = book.active sheet1.title = sheet for i in range(0, len(value)): for j in range(0, len(value[i])): sheet1.cell(row=i + 1, column=j + 1, value=str(value[i][j])) book.save(path) print("写入数据成功!") def addExcel(path, value, sheet): ''' :param sheet:sheet的名称 :param path:写入excel的路径 :param value: 追加的数据 :return: ''' wb = openpyxl.load_workbook(path) wb.create_sheet(sheet) ws = wb[sheet] #该功能可以直接获取指定的sheet表,需要屏蔽掉上一步create_sheet for ss in value: ws.append(ss)#不覆盖原数据 ws.cell() #覆盖原数据 wb.save(path) print("写入成功") def main(): value1 = [["标题1", "标题2", "标题3"], ["a", "b", "c"], ["1", "2", "3"]] writeExcel("sss.xlsx", value1,sheet="sheet1") path = "sss.xlsx" value2 = [["a", "b", "v"], ["ss", "bbb", "vvv"]] addExcel(path, value2, sheet="sheet2") #打开文件: from openpyxl import load_workbook excel=load_workbook('E:/test.xlsx') #获取sheet: table = excel.get_sheet_by_name('Sheet1') #通过表名获取 #获取行数和列数: rows=table.max_row #获取行数 cols=table.max_column #获取列数 #获取单元格值: Data=table.cell(row=row,column=col).value #获取表格内容,是从第一行第一列是从1开始的,注意不要丢掉 .value #通过名字 ws = wb["frequency"] #等同于 ws2 = wb.get_sheet_by_name('frequency') #不知道名字用index sheet_names = wb.get_sheet_names() ws = wb.get_sheet_by_name(sheet_names[index])# index为0为第一张表 #或者 ws =wb.active # 等同于 ws = wb.get_active_sheet() #通过_active_sheet_index设定读取的表,默认0读第一个表 #活动表表名 wb.get_active_sheet().title if __name__ == '__main__': main()