一、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)
寫入結果:

