一、xlrt读取excel中的数据
现有文件存放地址如下:
需要读取的文件中“redpacket”这个表格的内容:
1、现编写代码如下,目标读取表格中“redpacket_gc”这一值
import xlrd fp='C:/GIT-CUISY/python/info.xlsx' #文件存放的地址 workbook=xlrd.open_workbook(fp) #创建一个工作薄 sheet=workbook.sheet_by_name('redpacket') #通过名字找到需要操作的某个表格 sheet2=workbook.sheet_by_index(1) #通过索引查找需要操作的某个表格 a=sheet.cell(2,3).value #读取表格中的某个值 a1=sheet.cell(2,3) b=sheet2.cell(2,3).value print a,a1,b print type(a),type(a1)
运行的结果为:
注意:
a、文件地址中,windows系统的斜杠复制出来默认为“\”,需要修改为“/”
b、由代码可知,找到文件中具体某个sheet,可以通过名字sheet_by_name,也可以通过索引sheet_by_index,其得到的效果a、b的值都是一样的
c、未增加“.value”时,输入结果类型为<class 'xlrd.sheet.Cell'>,不为我们常用格式,因此加入“.value”,能使类型转化为unicode格式,在进行decode转化为我们所需要的格式。在这里我需要转换为字符串,则会用做sheet.cell(2,3).value.decode('utf8')
d、使用xlrd方法,能读取xlsx、xls格式的文件,不能读取csv格式文件
2、读取表格中时间格式的值
为了读取“2017/8/4 18:39”这个值,编写代码如下
c=sheet.cell(10,5).value #读取表格中的某个值 print c print type(c)
得到的结果为如下,并非为我们所需要的正确格式
其实,在运用python读取表格时,可以使用ctype方法来确认表格中读取的数据类型(ctype :
0
empty,
1
string,
2
number,
3
date,
4
boolean,
5
error
),栗子:
print sheet.cell(1,3).ctype,sheet.cell(2,3).ctype,sheet.cell(10,5).ctype
运行结果分别为 2 1 3,代表数字、字符串、日期,转换日期使用xldate_as_tuple方法:
d=xlrd.xldate_as_tuple(sheet.cell(10,5).value,0) print d,type(d)
运行结果为(2017, 8, 4, 18, 39, 35),是一个元组,将年、月、日、时、分、秒分别存在了元组当中,使用了如下一个方法转化为自己想要的格式(也可以使用python自带的其它方式转换)
str1='-' str2=':' timelist=[] for r in d: if len(str(r))<2: r="0"+str(r) timelist.append(str(r)) print timelist print str1.join(timelist[:3])+" "+str2.join(timelist[3:])
运行结果为
二、运用xlwt将数据写入excel
import xlwt f=xlwt.Workbook() sheet=f.add_sheet("test-cuisy",cell_overwrite_ok=True) #设置为True,可以覆盖原来的值 sheet.write(0,0,"test1")写入第0行,第0列 f.save('test.xls')#在当前目录下创建一个test.xls的文件
经过尝试,使用save方式时,保存格式只能为xls格式,保存为xlsx格式时会打开失败。
三、csv文件的操作
1、读取csv中的数据:
import csv fp='C:/GIT-CUISY/python/BOSS/redpacket_update/coupon.csv' reader=csv.reader(open(fp,'r')) #以只读模式打开 for r in reader: print r
得到的结果是吧csv文件中每行结果打印一个list出来
2、向csv中写入数据:
import csv with open("test.csv",'ab') as fp: writer=csv.writer(fp) data=[0,1,2,3,4,5,6] writer.writerow(data)
写入结果: