zoukankan      html  css  js  c++  java
  • python 的两个模块xlwt,xlrd,写入和读取Excel数据

    http://www.cnblogs.com/fireme/p/3887284.html

    这上面写的很全,不过我只需要简单的读和写的操作就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)
    
  • 相关阅读:
    try catch in php
    druid德鲁伊数据库密码加密
    mysql 1093
    MySQL Delete语句不能用别名
    SQL筛选两个字段同时满足多个条件的结果
    MySQL 查询有效小数位数大于两位的值
    我们慌慌张张,不过图碎银几两
    查看Linux服务器端口占用情况,网络情况和CPU使用情况
    Gitbash命令行管理项目
    IDEA中Git的用户名修改
  • 原文地址:https://www.cnblogs.com/wuqingzangyue/p/5437218.html
Copyright © 2011-2022 走看看