朋友圈

400-850-8622

全國(guó)統(tǒng)一學(xué)習(xí)專線 9:00-21:00

位置:北京辦公軟件培訓(xùn)資訊 > 北京excel培訓(xùn)資訊 > 終于理解python如何寫入excel

終于理解python如何寫入excel

日期:2019-08-25 12:21:28     瀏覽:696    來源:天才領(lǐng)路者
核心提示:學(xué)習(xí)Python的過程中,我們會(huì)遇到Excel的讀寫問題。通過搜索得知,我們可以使用xlwtmodule將數(shù)據(jù)寫入Excel表格,使用xlrdmodule從Excel讀取數(shù)據(jù)。
學(xué)習(xí)Python的過程中,我們會(huì)遇到Excel的讀寫問題。通過搜索得知,我們可以使用xlwt module將數(shù)據(jù)寫入Excel表格,使用xlrd module從Excel讀取數(shù)據(jù)。那么python如何寫入excel呢?一起來了解下吧: ? python如何寫入excel ?

python如何寫入excel

? 1.讀取Excel(需要安裝xlrd): ? #-*- coding: utf8 -*- ? import xlrd ? fname = "reflect.xls" ? bk = xlrd.open_workbook(fname) ? shxrange = range(bk.nsheets) ? try: ? ?sh = bk.sheet_by_name("Sheet1") ? except: ? ?print "no sheet in %s named Sheet1" % fname ? #獲取行數(shù) ? nrows = sh.nrows ? #獲取列數(shù) ? ncols = sh.ncols ? print "nrows %d, ncols %d" % (nrows,ncols) ? #獲取*行*列數(shù)據(jù)? ? cell_value = sh.cell_value(1,1) ? #print cell_value ? row_list = [] ? #獲取各行數(shù)據(jù) ? for i in range(1,nrows): ? ?row_data = sh.row_values(i) ? ?row_list.append(row_data) ? 2.寫入Excel(需安裝pyExcelerator) ? from pyExcelerator import * ? w = Workbook()? #創(chuàng)建一個(gè)工作簿 ? ws = w.add_sheet('Hey, Hades')? #創(chuàng)建一個(gè)工作表 ? ws.write(0,0,'bit') #在1行1列寫入bit ? ws.write(0,1,'huang') #在1行2列寫入huang ? ws.write(1,0,'xuan') #在2行1列寫入xuan ? w.save('mini.xls')? #保存 ? 3.再舉個(gè)自己寫的讀寫Excel的例子 ? 讀取reflect.xls中的某些信息進(jìn)行處理后寫入mini.xls文件中?!? ? #-*- coding: utf8 -*- ? import xlrd ? from pyExcelerator import * ? w = Workbook()? ? ws = w.add_sheet('Sheet1')? ? fname = "reflect.xls" ? bk = xlrd.open_workbook(fname) ? shxrange = range(bk.nsheets) ? try: ? ?sh = bk.sheet_by_name("Sheet1") ? except: ? ?print "no sheet in %s named Sheet1" % fname ? nrows = sh.nrows ? ncols = sh.ncols ? print "nrows %d, ncols %d" % (nrows,ncols) ? cell_value = sh.cell_value(1,1) ? #print cell_value ? row_list = [] ? mydata = [] ? for i in range(1,nrows): ? ?row_data = sh.row_values(i) ? ?pkgdatas = row_data[3].split(',') ? ?#pkgdatas.split(',') ? ?#獲取每個(gè)包的前兩個(gè)字段 ? ?for pkgdata in pkgdatas: ? ? pkgdata = '.'.join((pkgdata.split('.'))[:2]) ? ? mydata.append(pkgdata) ? ?#將列表排序 ? ?mydata = list(set(mydata)) ? ?print mydata ? ?#將列表轉(zhuǎn)化為字符串 ? ?mydata = ','.join(mydata) ? ?#寫入數(shù)據(jù)到每行的*列 ? ?ws.write(i,0,mydata) ? ?mydata = [] ? ?row_list.append(row_data[3]) ? #print row_list ? w.save('mini.xls') ? 4.現(xiàn)在我需要根據(jù)Excel文件中滿足特定要求的apk的md5值來從服務(wù)器獲取相應(yīng)的apk樣本,就需要這樣做:  ? #-*-coding:utf8-*- ? import xlrd ? import os ? import shutil ? fname = "./excelname.xls" ? bk = xlrd.open_workbook(fname) ? shxrange = range(bk.nsheets) ? try: ? ?#打開Sheet1工作表 ? ?sh = bk.sheet_by_name("Sheet1") ? except: ? ?print "no sheet in %s named Sheet1" % fname ? #獲取行數(shù) ? nrows = sh.nrows ? #獲取列數(shù) ? ncols = sh.ncols ? #print "nrows %d, ncols %d" % (nrows,ncols) ? #獲取*行*列數(shù)據(jù) ? cell_value = sh.cell_value(1,1) ? #print cell_value ? row_list = [] ? #range(起始行,結(jié)束行) ? for i in range(1,nrows): ? ?row_data = sh.row_values(i) ? ?if row_data[6] == "HXB": ? ? filename = row_data[3]+".apk" ? ? #print "%s %s %s" %(i,row_data[3],filename) ? ? filepath = r"./1/"+filename ? ? print "%s %s %s" %(i,row_data[3],filepath) ? ? if os.path.exists(filepath): ? ? ?shutil.copy(filepath, r"./myapk/") ? 補(bǔ)充一個(gè)使用xlwt3進(jìn)行Excel文件的寫操作。 ? import xlwt3 ? if __name__ == '__main__': ? ? ? datas = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h']]#二維數(shù)組 ? ? ? file_path = 'D:\test.xlsx' ? ? ? wb = xlwt3.Workbook() ? ? ? sheet = wb.add_sheet('test')#sheet的名稱為test ? ? ? #單元格的格式 ? ? ? style = 'pattern: pattern solid, fore_colour yellow; '#背景顏色為黃色 ? ? ? style += 'font: bold on; '#粗體字 ? ? ? style += 'align: horz centre, vert center; '#居中 ? ? ? header_style = xlwt3.easyxf(style) ? ? ? row_count = len(datas) ? ? ? col_count = len(datas[0]) ? ? ? for row in range(0, row_count):? ? ? ? ? ? col_count = len(datas[row])? ? ? ? ? ? for col in range(0, col_count): ? ? ? ? ? ? ? if row == 0:#設(shè)置表頭單元格的格式 ? ? ? ? ? ? ? ? ? sheet.write(row, col, datas[row][col], header_style) ? ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? ? sheet.write(row, col, datas[row][col]) ? ? ? wb.save(file_path) ? python數(shù)據(jù)如何寫入excel表格 ? 安裝: xlsxwriter第三方庫 ? code: ? #!/usr/bin/env/python ? #_*_coding:utf-8_*_ ? #Data:2017-08-13 ? #Auther:蘇莫 ? #Link:http://blog.csdn.net/lingluofengzang ? #PythonVersion:python2.7 ? #filename:xlsx.py ? import sys ? # import os ? import xlsxwriter ? ''' ? pip install xlsxwriter ? ''' ? reload(sys) ? sys.setdefaultencoding("utf-8") ? # path = os.path.dirname(os.path.abspath(__file__)) ? # 建立文件 ? workbook = xlsxwriter.Workbook("text.xlsx") ? # 可以制定表的名字 ? # worksheet = workbook.add_worksheet('text') ? worksheet = workbook.add_worksheet() ? # 設(shè)置列寬 ? # worksheet.set_column('A:A',10) ? # 設(shè)置祖體 ? bold = workbook.add_format({'bold':True}) ? # 定義數(shù)字格式 ? # money = workbook.add_format({'num_format':'$#,##0'}) ? # 寫入帶粗體的數(shù)據(jù) ? worksheet.write('A1','data',bold) ? worksheet.write('B1','work') ? ''' ? ? worksheet.write(0, 0, 'Hello')? ? ? ? ? # write_string() ? worksheet.write(1, 0, 'World')? ? ? ? ? # write_string() ? worksheet.write(2, 0, 2)? ? ? ? ? ? ? ? # write_number() ? worksheet.write(3, 0, 3.00001)? ? ? ? ? # write_number() ? worksheet.write(4, 0, '=SIN(PI()/4)')? ?# write_formula() ? worksheet.write(5, 0, '')? ? ? ? ? ? ? ?# write_blank() ? worksheet.write(6, 0, None)? ? ? ? ? ? ?# write_blank() ? ''' ? worksheet.write('A3',15) ? worksheet.write('B3',20) ? worksheet.write('C3',44) ? worksheet.write('D3',36) ? # xlsx計(jì)算數(shù)據(jù) ? worksheet.write('E3','=SUM(A3:D3)') ? ''' ? 建立Chart對(duì)象: chart = workbook.add_chart({type, 'column'}) ? Chart: Area, Bar, Column, Doughnut, Line, Pie, Scatter, Stock, Radar ? 將圖插入到sheet中: worksheet.insert_chart('A7', chart) ? ''' ? # 定義插入的圖標(biāo)樣式 ? chart = workbook.add_chart({"type":'column'}) ? headings = ['a','b','c'] ? data = [ ? ? ? [1,2,3,4,5], ? ? ? [2,4,6,8,10], ? ? ? [3,6,9,12,15], ? ] ? # 按行插入數(shù)據(jù) ? worksheet.write_row('A4',headings) ? # 按列插入數(shù)據(jù) ? worksheet.write_column('A5',data[0]) ? worksheet.write_column('B5',data[1]) ? worksheet.write_column('C5',data[2]) ? # 圖行的數(shù)據(jù)區(qū) ? # name:代表圖例名稱; ? # categories:是x軸項(xiàng),也就是類別; ? # values:是y軸項(xiàng),也就是值; ? chart.add_series({ ? ? ? 'name':'=Sheet1!$B$4', ? ? ? 'categories':'=Sheet1!$A$5:$A$9', ? ? ? 'values':'=Sheet1!$B$5:$B$9', ? }) ? chart.add_series({ ? ? ? 'name':['Sheet1', 3, 2], ? ? ? 'categories':['Sheet1', 4, 0, 8, 0], ? ? ? 'values':['Sheet1', 4, 2, 8, 2], ? }) ? # 圖形的標(biāo)題 ? chart.set_title ({'name': 'Percent Stacked Chart'}) ? # 圖形X軸的說明 ? chart.set_x_axis({'name': 'Test number'}) ? # 圖形Y軸的說明 ? chart.set_y_axis({'name': 'Sample length (mm)'}) ? # 設(shè)置圖表風(fēng)格 ? chart.set_style(11) ? # 插入圖形,帶偏移 ? worksheet.insert_chart('D12',chart,{'x_offset': 25, 'y_offset': 10}) ? workbook.close() ? Python如何對(duì)Excel進(jìn)行讀寫 ? # -*- coding: utf-8 -*- ? #導(dǎo)入xlwt模塊 ? import xlwt ? # 創(chuàng)建一個(gè)Workbook對(duì)象,這就相當(dāng)于創(chuàng)建了一個(gè)Excel文件 ? book = xlwt.Workbook(encoding='utf-8', style_compression=0) ? ''' ? Workbook類初始化時(shí)有encoding和style_compression參數(shù) ? encoding:設(shè)置字符編碼,一般要這樣設(shè)置:w = Workbook(encoding='utf-8'),就可以在excel中輸出中文了。 ? 默認(rèn)是ascii。當(dāng)然要記得在文件頭部添加: ? #!/usr/bin/env python ? # -*- coding: utf-8 -*- ? style_compression:表示是否壓縮,不常用。 ? ''' ? #創(chuàng)建一個(gè)sheet對(duì)象,一個(gè)sheet對(duì)象對(duì)應(yīng)Excel文件中的一張表格。 ? # 在電腦桌面右鍵新建一個(gè)Excel文件,其中就包含sheet1,sheet2,sheet3三張表 ? sheet = book.add_sheet('test', cell_overwrite_ok=True) ? # 其中的test是這張表的名字,cell_overwrite_ok,表示是否可以覆蓋單元格,其實(shí)是Worksheet實(shí)例化的一個(gè)參數(shù),默認(rèn)值是False ? # 向表test中添加數(shù)據(jù) ? sheet.write(0, 0, 'EnglishName')? # 其中的'0-行, 0-列'指定表中的單元,'EnglishName'是向該單元寫入的內(nèi)容 ? sheet.write(1, 0, 'Marcovaldo') ? txt1 = '中文名字' ? sheet.write(0, 1, txt1.decode('utf-8'))? # 此處需要將中文字符串解碼成unicode碼,否則會(huì)報(bào)錯(cuò) ? txt2 = '馬可瓦多' ? sheet.write(1, 1, txt2.decode('utf-8')) ? # *,將以上操作保存到指定的Excel文件中 ? book.save(r'e:test1.xls')? # 在字符串前加r,聲明為raw字符串,這樣就不會(huì)處理其中的轉(zhuǎn)義了。否則,可能會(huì)報(bào)錯(cuò) ? python如何將數(shù)據(jù)寫入excel ? Python中一般使用xlrd(excel read)來讀取Excel文件,使用xlwt(excel write)來生成Excel文件(可以控制Excel中單元格的格式),需要注意的是,用xlrd讀取excel是不能對(duì)其進(jìn)行操作的:xlrd.open_workbook()方法返回xlrd.Book類型,是只讀的,不能對(duì)其進(jìn)行操作。而xlwt.Workbook()返回的xlwt.Workbook類型的save(filepath)方法可以保存excel文件。 ? 因此對(duì)于讀取和生成Excel文件都非常容易處理,但是對(duì)于已經(jīng)存在的Excel文件進(jìn)行修改就比較麻煩了。不過,還有一個(gè)xlutils(依賴于xlrd和xlwt)提供復(fù)制excel文件內(nèi)容和修改文件的功能。其實(shí)際也只是在xlrd.Book和xlwt.Workbook之間建立了一個(gè)管道而已。 ? xlutils.copy模塊的copy()方法實(shí)現(xiàn)了這個(gè)功能,示例代碼如下: ? from xlrd import open_workbook ? from xlutils.copy import copy ? rb = open_workbook('m:\1.xls') ? #通過sheet_by_index()獲取的sheet沒有write()方法 ? rs = rb.sheet_by_index(0) ? wb = copy(rb) ? #通過get_sheet()獲取的sheet有write()方法 ? ws = wb.get_sheet(0) ? ws.write(0, 0, 'changed!') ? wb.save('m:\1.xls') ? 練習(xí)代碼(通過xlrd 讀取 & 寫入,再借用copy進(jìn)行保存): ? 特別注意:由于copy保存實(shí)質(zhì)上是通過xlwt進(jìn)行保存的,而實(shí)際上xlwt保存的文件。 ?     ? ?而通過xlwt只能寫入xls文件,不能寫入xlsx文件。 ? import xlrd ? from xlwt import * ? from xlutils.copy import copy ? xlsfile = 'test.xls' ? book = xlrd.open_workbook(xlsfile) ? sheet_name = book.sheet_names() ? print(sheet_name) ? sheet = book.sheet_by_index(1) ? nrows = sheet.nrows ? ncols = sheet.ncols ? print(nrows) ? print(ncols) ? row_data = sheet.row_values(0) ? col_data = sheet.col_values(0) ? print(row_data) ? print(col_data) ? cell_value = sheet.cell_value(3,0) ? print(cell_value) ? cell_value2 = sheet.cell(3,0) ? print(cell_value2) ? sheet.put_cell(1,2,1,"test",0) ? cell_value2 = sheet.cell(1,1) ? print(cell_value2) ? #保存xlsfile ? wb = copy(book) ? wb.save(xlsfile) Python向excel中寫入數(shù)據(jù) ? 具體代碼如下: ? #!/usr/bin/env python ? # coding=utf-8 ? from xlwt import * ? #需要xlwt庫的支持 ? #import xlwt ? file = Workbook(encoding = 'utf-8') ? #指定file以u(píng)tf-8的格式打開 ? table = file.add_sheet('data') ? #指定打開的文件名 ? data = { ? ? ? ? ? "1":["張三",150,120,100], ? ? ? ? ? "2":["李四",90,99,95], ? ? ? ? ? "3":["王五",60,66,68] ? ? ? ? ? } ? #字典數(shù)據(jù) ? ldata = [] ? num = [a for a in data] ? #for循環(huán)指定取出key值存入num中 ? num.sort() ? #字典數(shù)據(jù)取出后無需,需要先排序 ? for x in num: ? #for循環(huán)將data字典中的鍵和值分批的保存在ldata中 ? ? ? t = [int(x)] ? ? ? for a in data[x]: ? ? ? ? ? t.append(a) ? ? ? ldata.append(t) ? for i,p in enumerate(ldata): ? #將數(shù)據(jù)寫入文件,i是enumerate()函數(shù)返回的序號(hào)數(shù) ? ? ? for j,q in enumerate(p): ? ? ? ? ? # print i,j,q ? ? ? ? ? table.write(i,j,q) ? file.save('data.xlsx') ?
如果本頁不是您要找的課程,您也可以百度查找一下: