學(xué)習(xí)Python的過程中,我們會(huì)遇到Excel的讀寫問題。通過搜索得知,我們可以使用xlwt module將數(shù)據(jù)寫入Excel表格,使用xlrd module從Excel讀取數(shù)據(jù)。那么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')
?