python 的两个模块xlwt,xlrd,写入和读取Excel数据

这上面写的很全,不过我只需要简单的读和写的操作就ok了,下面是我写的读和写入Excel操作

读取Excel数据

#coding:utf-8
import xlrd
goods = xlrd.open_workbook('goods_test.xlsx')#打开文件


sh = goods.sheet_by_index(3)#返回第几页的对象
#这个对象包含有我们需要的Excel信息
for rx in range(sh.nrows):
        print sh.row(rx)  #返回每一行的数据
for cl in range(sh.ncols):
        print sh.col(cl) #返回每一列的数据

print sh.col(2)
print sh.col_values(2)
print 'Goods name:',goods.sheet_names()
print sh.cell(2.2).ctypeprint sh.name,sh.nrows,sh.ncols#返回对象页的名称,行数和列数
print "Cell D30 is",sh.cell_value(rowx=20,colx=3)#返回特定数值
print 'The number of goodssheets is:', goods.nsheets#返回有几页

写几次就清楚了,sh.col()和sh.col_values()等等不同

向Excel写入数据

定义字体的样式还真是麻烦,所以我就只进行简单的写入操作,有兴趣的自己研究吧

#coding:utf-8
import xlwt
wb = xlwt.Workbook(encoding='utf-8')#创建工作簿,设置字符编码
ws = wb.add_sheet('A TEST Sheet')#创建sheet
ws.write(2, 1, 1)#写入数据,2,1,1分别为,行row,列col,数据
wb.save('example3.xls')#保存数据,创建example3.xls

#from datetime import datetime
#style0 = xlwt.easyxf('font: name Times New Roman,color-index red, bold on',num_format_str='#,##0.00')
#style1 = xlwt.easyxf(num_format_str='D-MMM-YY')
# style = xlwt.XFStyle() #初始化样式
# font = xlwt.Font() #为样式创建字体

实例

#coding:utf-8
import xlrd
import xlwt
import os

path_list = []
goods_list = []

#picture1-picture7里面含有大量的excel文件,但是还含有其它文件,我需要把这些excel文件里面的
#内容整合到一个excel文件里面并把这些处理过的excel文件都删除

#先打开picture1-picture7文件夹,循环遍历每个文件,将后缀名为.xlsx文件路径添加到path_list里面
for i in range(1,8):
        startdir = 'picture'+str(i)#这里路径不完整,不过我是将程序写在操作目录下所以没关系
        for dirpath,dirnames,filenames in os.walk(startdir):#dirpath为父目录,dirnames为所有文件夹的名字,filenames为所有文件的名字
                for file in filenames:
                        if os.path.splitext(file)[1] == '.xlsx':#还有菏泽杨file.split(".")[1]=='.xlsx'也可以
                                filepath = os.path.join(dirpath,file)#将文件名与父目录连接起来,形成一个路径,就可以访问了
                                path_list.append(filepath)

#打开文件,
for path in path_list:
        goods = xlrd.open_workbook(path)#打开文件
        sh = goods.sheet_by_index(3)#返回第几页的对象
        for rx in range(sh.nrows):
                if rx:
                        goods_list.append(sh.row_values(rx))#将打开的excel文件的第三页对象的每一行的数据添加到goods_list当中保存

wb = xlwt.Workbook()#创建工作簿,设置字符编码
ws = wb.add_sheet('Sheet1')#创建sheet

r = 0
for goods in goods_list:
        for i in range(len(goods)):
                #我的2,3,4列的数字是厘米需要改成毫米
                if i in (1,2,3):
                        ws.write(r,i,goods[i]*10) #可以直接写入行信息
                else:
                        ws.write(r,i,goods[i]) 
        r += 1
wb.save('finish.xls')#保存文件,这个是在这个程序所在所在目录,也可以写详细路径

#删除操作过的文件
for path in path_list:
        os.remove(path)

python对中文支持不好,所以经常出现一些错误,注意编码的问题

#goods = xlrd.open_workbook('picture2/picture2/HG商品-051.xlsx'),直接这么写会出错 

# inpath = 'picture2/HG商品-051.xlsx'
# uipath = unicode(inpath , "utf8")
# goods = xlrd.open_workbook(uipath)