Excel
是Microsoft
為使用Windows
和Apple Macintosh
操作系統(tǒng)的電腦編寫的一款電子表格軟件。直觀的界面、出色的計(jì)算功能和圖表工具,再加上成功的市場營銷,使Excel
成為最流行的個(gè)人計(jì)算機(jī)數(shù)據(jù)處理軟件。在1993
年,作為Microsoft Office
的組件發(fā)布了5.0版之后,Excel
就開始成為所適用操作平臺上的電子制表軟件的霸主。
1、介紹
excel
本身是有很多功能的,比如說格式調(diào)試,圖表展示,公式計(jì)算等內(nèi)容,但是對于我們在python
爬蟲中,我們關(guān)注的僅僅是純數(shù)據(jù),其他的格式內(nèi)容,咱們暫時(shí)不提。
我們使用python
操作excel
的時(shí)候,我們要使用兩個(gè)模塊,分別是xlrd
和xlwt
,下面我們就分別使用python
下的pip
命令來安裝下這兩個(gè)模塊。
2、安裝
pip install xlrd=1.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install xlwt -i https://pypi.tuna.tsinghua.edu.cn/simple
3、python讀取excel表格
3.1 創(chuàng)建測試文件
首先我們先創(chuàng)建一個(gè)名字為ceshi.xlsx
的測試文件,以供我們使用,文件如下:
3.2 讀取excel中所有sheet的信息
在這里有好幾種方式,我們分別來嘗試下;
(1)獲取所有的sheet
import xlrd
Workbook = xlrd.open_workbook('ceshi.xlsx')
Sheet_Names = Workbook.sheet_names()
print(Sheet_Names)
運(yùn)行結(jié)果如下:
['匯總', '姓名', '年齡', '地區(qū)', '出生年月', '愛好']
(2)根據(jù)索引獲取sheet
import xlrd
Workbook = xlrd.open_workbook('ceshi.xlsx')
Sheet_Names = Workbook.sheet_by_index(0) print(Sheet_Names.name)
運(yùn)行結(jié)果如下:
匯總
從上面我們可以看到,我們根據(jù)索引為“0”,獲取到了第一個(gè)sheet
,那么同理,要獲取第二個(gè)sheet
的話,我們是不是應(yīng)該配置索引為“1”即可;
(3)根據(jù)名字獲取sheet
import xlrd
Workbook = xlrd.open_workbook('ceshi.xlsx')
Sheet_Name = Workbook.sheet_by_name('出生年月') print(Sheet_Name.name)
運(yùn)行結(jié)果如下:
出生年月
(4)獲取所有sheet
對象
import xlrd
Workbook = xlrd.open_workbook('ceshi.xlsx')
Sheet_Names = Workbook.sheets()
print(Sheet_Names)
for i in Sheet_Names:
print(i.name)
運(yùn)行結(jié)果如下:
[<xlrd.sheet.Sheet object at 0x000001554E142E20>, <xlrd.sheet.Sheet object at 0x000001554E142F10>, <xlrd.sheet.Sheet object at 0x000001554E142F40>, <xlrd.sheet.Sheet object at 0x000001554E142F70>, <xlrd.sheet.Sheet object at 0x000001554E151A60>, <xlrd.sheet.Sheet object at 0x000001554E131DC0>] 匯總 姓名 年齡 地區(qū) 出生年月 愛好
3.3 獲取該sheet中的行數(shù)和列數(shù)
import xlrd
WorkBook = xlrd.open_workbook('ceshi.xlsx')
Sheet_Name = WorkBook.sheet_by_name('匯總')
print("名字為{}的sheet中,一共有{}行".format(Sheet_Name.name, Sheet_Name.nrows))
print("名字為{}的sheet中,一共有{}列".format(Sheet_Name.name, Sheet_Name.ncols))
運(yùn)行結(jié)果如下:
名字為匯總的sheet中,一共有9行 名字為匯總的sheet中,一共有5列
4、使用python獲取excel中指定單元格的數(shù)據(jù)
Cell
就表示單元格,單元格也就是excel
中的最小單位,一個(gè)個(gè)小格子就是單元格。且,在
python
中,每一行和列都是從0開始,從左上角依次類推+1
的。
4.1 獲取指定行和列的cell對象
方法:
sheet.cell(row,col)
示例代碼:
import xlrd
Workbook = xlrd.open_workbook('ceshi.xlsx')
Sheet_Name = Workbook.sheet_by_index(0) print(Sheet_Name.cell(0, 1))
# 獲取第0行,第1列的數(shù)據(jù),也就是B1單元格的數(shù)據(jù)
運(yùn)行結(jié)果如下:
text:'年齡'
4.2 獲取指定行的某幾列的cell對象
方法:
sheet.row_slice(row,start_col,end_col)
示例代碼:
import xlrd
Workbook = xlrd.open_workbook('ceshi.xlsx')
Sheet_Name = Workbook.sheet_by_index(0) print(Sheet_Name.row_slice(1, 0, 5))
# 獲取第一行的0-5列之間的,不包括第5列
運(yùn)行結(jié)果如下:
[text:'張三', number:18.0, text:'北京', xldate:36526.0, text:'吃飯']
4.3 獲取指定列的某幾行的cell對象
方法:
sheet.col_slice(col,start_row,end_row)
示例代碼如下:
import xlrd
Workbook = xlrd.open_workbook('ceshi.xlsx')
Sheet_Name = Workbook.sheet_by_index(0) print(Sheet_Name.col_slice(0, 0, 5))
# 獲取第0列的,0-5行之間的數(shù)據(jù),不包括第5行
運(yùn)行結(jié)果如下:
[text:'姓名', text:'張三', text:'李四', text:'王五', text:'趙六']
4.4 獲取指定行和列的值
方法:
sheet.cell_value(row,col)
示例代碼如下:
import xlrd
Workbook = xlrd.open_workbook('ceshi.xlsx')
Sheet_Name = Workbook.sheet_by_index(0) print(Sheet_Name.cell_value(1, 2))
# 獲取第1行,第二列的單元格的數(shù)據(jù),即C2的數(shù)據(jù)
運(yùn)行結(jié)果如下:
北京
4.5 獲取指定行的某幾列的值
方法:
sheet.row_values(row,start_col,end_col)
示例代碼如下:
import xlrd
Workbook = xlrd.open_workbook('ceshi.xlsx')
Sheet_Name = Workbook.sheet_by_index(0) print(Sheet_Name.row_values(1, 2, 5))
# 獲取第一行,第2-5列的值
運(yùn)行結(jié)果如下 :
['北京', '2000-1-1', '吃飯']
4.6 獲取指定列的某幾行的值
方法:
sheet.col_values(col,start_row,end_row)
示例代碼如下:
import xlrd
Workbook = xlrd.open_workbook('ceshi.xlsx')
Sheet_Name = Workbook.sheet_by_index(0) print(Sheet_Name.col_values(4, 0, 3))
# 獲取第4列,0-3行的值,不包括第三行
運(yùn)行結(jié)果如下:
['愛好', '吃飯', '睡覺']
5、excel中Cell的數(shù)據(jù)類型
-
xlrd.XL_CELL_TEXT(Text)
:文本類型; -
xlrd.XL_CELL_NUMBER(Number)
:數(shù)值類型; -
xlrd.XL_CELL_DATE(Date)
:日期時(shí)間類型; -
xlrd.XL_CELL_BOOLEAN(Bool)
:布爾類型; -
xlrd.XL_CELL_BLANK
:空白數(shù)據(jù)類型。
6、使用python往excel中寫入數(shù)據(jù)
6.1 步驟梳理
-
導(dǎo)入
xlwt
模塊 -
創(chuàng)建一個(gè)
Workbook
對象 -
創(chuàng)建一個(gè)
Sheet
對象 -
使用
sheet.write(row,col,data)
方法把數(shù)據(jù)寫入到Sheet
下指定行和列中 -
保存成
Excel
文件
6.2 示例代碼
import xlwt
import random
Workbook = xlwt.Workbook(encoding='utf-8')
Sheet_Name = Workbook.add_sheet('運(yùn)維家')
Headers = ['姓名', '年齡', '地區(qū)']
for index, Header in enumerate(Headers):
Sheet_Name.write(0, index, Header)
Names = ['張三', '李四', '王五']
Areas = ['北京', '山西', '上海']
for index, Name in enumerate(Names):
Sheet_Name.write(index + 1, 0, Name)
Sheet_Name.write(index + 1, 1, random.randint(20, 40))
Sheet_Name.write(index + 1, 2, random.choice(Areas))
Workbook.save('ceshi2.xls')
運(yùn)行之后,會生成一個(gè)名字為ceshi2.xls
的文件,我們打開看看是什么樣子的,如下圖:
從上面看,這個(gè)文件是符合我們的預(yù)期的。
7、使用python在已有的excel文件中新增內(nèi)容
7.1 步驟梳理
-
導(dǎo)入
xlrd
模塊 -
讀取已有的
excel
文件,生成一個(gè)對象 -
使用
put_cell(self, rowx, colx, ctype, value, xf_index)
方法添加數(shù)據(jù) -
導(dǎo)入
xlwt
模塊 -
新建一個(gè)
workbook
對象 -
新建一個(gè)
sheet
對象 -
將剛添加過數(shù)據(jù)的
sheet
每個(gè)單元格的數(shù)據(jù)讀取出來,并寫入到新的excel
文件中 -
保存
excel
文件
7.2 示例代碼
import xlrd, xlwt
Workbook = xlrd.open_workbook('ceshi2.xls')
Sheet_Name = Workbook.sheet_by_index(0)
Sheet_Name.put_cell(4, 0, xlrd.XL_CELL_TEXT, '趙六', None)
Sheet_Name.put_cell(4, 1, xlrd.XL_CELL_TEXT, '30', None)
Sheet_Name.put_cell(4, 2, xlrd.XL_CELL_TEXT, '吃飯', None)
Workbook_1 = xlwt.Workbook(encoding='utf-8')
Sheet_Name_1 = Workbook_1.add_sheet(Sheet_Name.name)
for row in range(Sheet_Name.nrows):
for col in range(Sheet_Name.ncols):
Sheet_Name_1.write(row, col, Sheet_Name.cell_value(row, col))
Workbook_1.save('ceshi3.xls')
運(yùn)行之后,會生成一個(gè)ceshi3.xls
文件,不止將ceshi2.xls
文件中的內(nèi)容放置到了ceshi3.xls
文件中,并新增了一行信息,如下圖:
報(bào)錯(cuò)解決
報(bào)錯(cuò)一
xlrd.biffh.XLRDError: Excel xlsx file; not supported
這個(gè)意思是你的xlrd
版本太高了,卸載重新安裝一個(gè)1.2.0
版本的就好了。
pip install xlrd==1.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
學(xué)習(xí)資源推薦
除了上述分享,如果你也喜歡編程,想通過學(xué)習(xí)Python獲取更高薪資,這里給大家分享一份Python學(xué)習(xí)資料。
這里給大家展示一下我進(jìn)的最近接單的截圖
??朋友們?nèi)绻行枰脑挘梢?mark>點(diǎn)擊下方鏈接領(lǐng)取或者V掃描下方二維碼聯(lián)系領(lǐng)取,也可以內(nèi)推兼職群哦~
???CSDN大禮包,二維碼失效時(shí),點(diǎn)擊這里領(lǐng)取??:【學(xué)習(xí)資料合集&相關(guān)工具&PyCharm永久使用版獲取方式】
學(xué)好 Python 不論是就業(yè)還是做副業(yè)賺錢都不錯(cuò),但要學(xué)會 Python 還是要有一個(gè)學(xué)習(xí)規(guī)劃。最后大家分享一份全套的 Python 學(xué)習(xí)資料,給那些想學(xué)習(xí) Python 的小伙伴們一點(diǎn)幫助!

1.Python學(xué)習(xí)路線
2.Python基礎(chǔ)學(xué)習(xí)
01.開發(fā)工具
02.學(xué)習(xí)筆記
03.學(xué)習(xí)視頻
3.Python小白必備手冊
4.數(shù)據(jù)分析全套資源
5.Python面試集錦
01.面試資料
02.簡歷模板
文章來源:http://www.zghlxwxcb.cn/news/detail-778662.html

?? CSDN大禮包,二維碼失效時(shí),點(diǎn)擊這里領(lǐng)取??:【學(xué)習(xí)資料合集&相關(guān)工具&PyCharm永久使用版獲取方式】文章來源地址http://www.zghlxwxcb.cn/news/detail-778662.html
到了這里,關(guān)于python如何操作excel,在excel中讀取和寫入數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!