python对表格的操作


一、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)

 写入结果:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM