python读写Excel需要两个包:xlrd和xlwt。

#!/usr/bin/python
#-*- coding: utf-8 -*-
import xlrd #必须事先引入读excel的包xlrd
import xlwt #必须事先引入写excel的包xlwt

#根据索引获取Excel表格中的数据
#参数:file:Excel文件路径,colnameindex:表头列名所在行的索引,by_index:表的索引
#没有传递第二个和第三个参数的话,默认读取第一个Sheet表的第一行
def read_excel(file,colnameindex=0,by_index=0):
    try:
        data = xlrd.open_workbook(file)#打开excel
        table = data.sheets()[by_index] #通过索引顺序获取
        #sheet = data.sheet_by_index(by_index)#第一张sheet表
        #table = data.sheet_by_name(u'Sheet1')#通过名称获取
        #获取行数和列数
        nrows = table.nrows #行数
        ncols = table.ncols #列数
        #获取整行和整列的值(数组)table.row_values(i) table.col_values(i)
        colnames =  table.row_values(colnameindex) #某一行数据
        #打印表头列名
        #for name in range(0,ncols):
            #print name
        list =[]#列表
        #循环行列表数据
        for rownum in range(1,nrows):
             row = table.row_values(rownum)#列表
             if row:
                 app = []#列表
                 for i in range(len(colnames)):
                     #根据行下标和列下标获取单元格的数据
                     #value=table.cell(rownum,i).value
                     value=row[i]
                     app.append(value) #添加数据
                 list.append(app)
        return list
    except Exception,e:
        print str(e)

#生成excel
#参数file:保存路径,data:数据内容,为二维数组
def write_excel(file,data):
    book=xlwt.Workbook(encoding='utf-8',style_compression=0)
    sheet=book.add_sheet('sheet name',cell_overwrite_ok=True)#第二个参数true表示允许对一个单元格重复操作
    for row in range(0,len(data)):
        list=data[row]
        for col in range(0,len(list)):
            sheet.write(row,col,list[col])
    book.save(file)#保存文件

#主函数
def main(file,tar='./test.xls'):
   data = read_excel(file)#读取excel内容
   for row in data:
       print row
   write_excel(tar,data)#保存excel内容

if __name__=="__main__":
    filePath=u"E:/工作/公司公告-2014.xls"#excel所在路径
    main(filePath)
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐