Excel編輯模塊openpyxl的使用-創(chuàng)新互聯(lián)

使用Excel電子表格

Excel是一款適用于Windows的流行和強(qiáng)大的電子表格應(yīng)用程序。該openpyxl模塊允許您的Python程序讀取和修改Excel電子表格文件。例如,您可能會(huì)從一個(gè)電子表格中復(fù)制某些數(shù)據(jù)并將其粘貼到另一個(gè)電子表格中。或者,您可能需要經(jīng)過(guò)數(shù)千行,并根據(jù)一些標(biāo)準(zhǔn)挑選出少數(shù)幾行進(jìn)行小編輯。或者,您可能需要查看數(shù)百個(gè)部門預(yù)算電子表格,搜索任何處于紅色狀態(tài)的電子表格。這些都是Python可以為你做的那種枯燥無(wú)味的電子表格任務(wù)。

創(chuàng)新互聯(lián)是一家專業(yè)提供酒泉企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、成都做網(wǎng)站HTML5、小程序制作等業(yè)務(wù)。10年已為酒泉眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。

安裝openpyxl模塊

Python不附帶OpenPyXL,因此您必須安裝它。

pip install openpyxl

檢查是否安裝正確

import openpyxl

OpenPyXL團(tuán)隊(duì)定期發(fā)布新版本,可能命令或者功能隨時(shí)會(huì)有變動(dòng)。不過(guò),不要擔(dān)心:新版本應(yīng)該保持向后兼容本書中的說(shuō)明相當(dāng)長(zhǎng)一段時(shí)間。如果你有一個(gè)更新的版本,并想知道你可以使用哪些附加功能,你可以在 http://openpyxl.redthedocs.org 查看OpenPyXL的完整文檔。

下面介紹一下本模塊的一些基本用法:

打開(kāi)Excel文檔

Excel自動(dòng)為新工作簿提供的名為Sheet1,Sheet2和Sheet3的三個(gè)默認(rèn)工作表的選項(xiàng)卡。(創(chuàng)建的默認(rèn)工作表數(shù)量可能因操作系統(tǒng)和電子表格程序而異。)

使用OpenPyXL打開(kāi)Excel文檔:
一旦你導(dǎo)入了openpyxl模塊,你就可以使用該openpyxl.load_workbook()功能。在交互式shell中輸入以下內(nèi)容:

>>> import openpyxl 
    >>> wb = openpyxl.load_workbook('example.xlsx') 
    >>> type(wb) 
    <class'openpyxl.workbook.workbook.Workbook'>

該openpyxl.load_workbook()函數(shù)接受文件名并返回workbook數(shù)據(jù)類型的值。該Workbook對(duì)象表示Excel文件,有點(diǎn)像File對(duì)象表示打開(kāi)的文本文件。
請(qǐng)記住,example.xlsx需要位于當(dāng)前工作目錄中才能使用它。您可以通過(guò)導(dǎo)入os和使用來(lái)找出當(dāng)前工作目錄是什么os.getcwd(),并且可以使用更改當(dāng)前工作目錄os.chdir()。

從工作簿獲取表格

您可以通過(guò)調(diào)用該get_sheet_names()方法來(lái)獲取工作簿中所有工作表名稱的列表。在交互式shell中輸入以下內(nèi)容:

>>> import openpyxl 
    >>> wb = openpyxl.load_workbook('example.xlsx') 
    >>> wb.sheetnames
    ['Sheet1','Sheet2','Sheet3']
    >>> sheet = wb[r'Sheet1'] 
    >>> sheet
    <工作表“Sheet3”>
    >>> type(sheet)
     <class'openpyxl.worksheet.worksheet.Worksheet'>
    >>> sheet.title
    “工作表Sheet 3”
    >>> anotherSheet = wb.active 
    >>> anotherSheet 
    <Worksheet“Sheet1”>

每個(gè)工作表由一個(gè)Worksheet對(duì)象表示,您可以通過(guò)將get_sheet_by_name()工作表名稱字符串傳遞給工作簿方法來(lái)獲取該對(duì)象。最后,您可以讀取對(duì)象的active成員變量Workbook以獲取工作簿的活動(dòng)工作表。活動(dòng)工作表是在Excel中打開(kāi)工作簿時(shí)位于最上方的工作表。一旦你有了這個(gè)Worksheet對(duì)象,你可以從title屬性中獲得它的名字。

從表格中獲取單元格

一旦你有一個(gè)Worksheet對(duì)象,你可以Cell通過(guò)它的名字來(lái)訪問(wèn)一個(gè)對(duì)象。在交互式shell中輸入以下內(nèi)容:

>>> import openpyxl 
    >>> wb = openpyxl.load_workbook('example.xlsx') 
    >>> sheet = wb['Sheet1']
    >>> sheet ['A1'] 
    <Cell Sheet1.A1> 
    >> > sheet ['A1'].value 
    datetime.datetime(2015,4,5,13,34,2)

OpenPyXL將自動(dòng)解釋列A中的日期,并將它們作為datetime值返回而不是字符串。

>>> c = sheet ['B1'] 
    >>> c.value
    'Apples' 
    >>> 'Row '+ str(c.row)+',Column'+ c.column +'is'+ c.value'Row 
    1,Column B is Apples' 
    >>> 'Cell'+ c.coordinate +'is'+ c .value 
    'Cell B1 is Apples' 
    >>> 表['C1']。值 
    73

該Cell對(duì)象只是一個(gè)字符串,不會(huì)包含存儲(chǔ)在該單元格中的值。Cell對(duì)象也有row,column以及coordinate為單元提供位置信息的屬性。
在這里,訪問(wèn)value我們Cell的單元格B1對(duì)象的屬性給了我們字符串'Apples'。該row屬性為我們提供了整數(shù)1,該column屬性給我們'B',和coordinate屬性給我們'B1'。

通過(guò)字母指定一個(gè)列可能會(huì)非常棘手,尤其是因?yàn)樵诹衂之后,列以兩個(gè)字母開(kāi)頭:AA,AB,AC等等。作為替代方案,您還可以使用工作表的cell()方法獲取單元格,并為其參數(shù)row和column關(guān)鍵字參數(shù)傳遞整數(shù)。第一行或列的整數(shù)是1,而不是0。通過(guò)輸入以下內(nèi)容繼續(xù)交互式shell示例:

>>> sheet.cell(row = 1,column = 2) 
    <Cell Sheet1.B1> 
    >>> sheet.cell(row = 1,column = 2).value
    'Apples' 
    >>> for i in range(1,8,2):
    >>> print(i,sheet.cell(row = i,column = 2).value) 
    1蘋果
    3梨
    5蘋果
    7草莓
在列字母和數(shù)字之間轉(zhuǎn)換

要從字母轉(zhuǎn)換為數(shù)字,請(qǐng)調(diào)用該openpyxl.utils.column_index_from_string()函數(shù)。要將數(shù)字轉(zhuǎn)換為字母,請(qǐng)調(diào)用該openpyxl.utils.get_column_letter()函數(shù)。在交互式shell中輸入以下內(nèi)容:

>>> import openpyxl 
    >>> from openpyxl.utils import get_column_letter,column_index_from_string 
    >>> get_column_letter(1) 
    'A' 
    >>> get_column_letter(2)
    'B' 
    >>> get_column_letter(27) 
    'AA' 
    >>> get_column_letter (900) 
    'AHP' 
    >>> wb = openpyxl.load_workbook('example.xlsx') 
    >>> sheet = wb['Sheet1']
    >>> get_column_letter(sheet.max_column) 
    'C' 
    >>> column_index_from_string ('A') 
    1 
    >>> column_index_from_string('AA') 
    27

從openpyxl.utils模塊中導(dǎo)入這兩個(gè)函數(shù)后,您可以調(diào)用get_column_letter()并傳遞一個(gè)像27這樣的整數(shù)來(lái)確定第27列的字母名稱。該函數(shù)會(huì)column_index_string()做相反的事情:您將它傳遞給列的字母名稱,并告訴您該列的編號(hào)。您不需要加載工作簿即可使用這些功能。如果你愿意,你可以加載一個(gè)工作簿,獲取一個(gè)Worksheet對(duì)象,并調(diào)用一個(gè)Worksheet對(duì)象方法max_column來(lái)獲得一個(gè)整數(shù)。然后,您可以將該整數(shù)傳遞給get_column_letter()。

要訪問(wèn)特定行或列中單元格的值,還可以使用Worksheet對(duì)象rows和columns屬性。在交互式shell中輸入以下內(nèi)容:

>>> import openpyxl 
    >>> wb = openpyxl.load_workbook('example.xlsx') 
    >>> sheet = wb.active 
    >>> sheet.columns [1] 
    (<Cell Sheet1.B1>,<Cell Sheet1.B2 >,<Cell Sheet1.B3>,<Cell Sheet1.B4>,
    <Cell Sheet1.B5>,<Cell Sheet1.B6>,<Cell Sheet1.B7>)
    >>> for sheetObjects in column.columns [1]:
            print(cellObj.value)
    蘋果
    櫻桃
    梨
    橘子
    蘋果
    香蕉
    草莓

修改Excel文檔

將值寫入單元格很像將值寫入字典中的鍵。將其輸入到交互式shell中:

>>> import openpyxl 
    >>> wb = openpyxl.Workbook() 
    >>> sheet = wb['Sheet'] 
    >>> sheet ['A1'] ='Hello world!' 
    >>> sheet ['A1'].value
    >>> 'Hello world!'

如果將單元格的坐標(biāo)作為字符串,則可以像Worksheet對(duì)象上的字典鍵一樣使用它來(lái)指定要寫入的單元格。

保存Excel文檔

調(diào)用openpyxl.Workbook()函數(shù)來(lái)創(chuàng)建一個(gè)新的空白Workbook對(duì)象。在交互式shell中輸入以下內(nèi)容:

>>> import openpyxl 
    >>> wb = openpyxl.Workbook() 
    >>> wb.sheetnames
    ['Sheet'] 
    >>> sheet = wb.active 
    >>> sheet.title'Sheet 
    ' 
    >>> sheet.title ='Spam Bacon Eggs Sheet' 
    >>> wb.sheetnames 
    ['Spam Bacon Eggs Sheet']

該工作簿將以名為Sheet的單張開(kāi)始。您可以通過(guò)在其title屬性中存儲(chǔ)新字符串來(lái)更改工作表的名稱。

每次修改Workbook對(duì)象或其工作表和單元格時(shí),在調(diào)用save()工作簿方法之前,電子表格文件都不會(huì)被保存。在交互式shell中輸入以下內(nèi)容(在當(dāng)前工作目錄中使用example.xlsx):

>>> import openpyxl 
    >>> wb['example.xlsx'] 
    >>> sheet = wb.active 
    >>> sheet.title ='垃圾郵件' 
    >>> wb.save('example_copy.xlsx“)

在這里,我們更改了我們的工作表的名稱。為了保存我們的更改,我們將一個(gè)文件名作為字符串傳遞給save()方法。傳遞與原始文件不同的文件名,例如'example_copy.xlsx',將更改保存到電子表格副本中。當(dāng)然,保存的時(shí)候文件名可以和原本的文件名相同,那樣就相當(dāng)于修改原來(lái)的文檔,我們這樣做只是為了安全,防止程序出錯(cuò)導(dǎo)致原本的文檔出現(xiàn)問(wèn)題。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

名稱欄目:Excel編輯模塊openpyxl的使用-創(chuàng)新互聯(lián)
分享URL:http://m.kartarina.com/article30/ccghso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站移動(dòng)網(wǎng)站建設(shè)域名注冊(cè)微信小程序ChatGPT定制開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司
主站蜘蛛池模板: 无码av免费一区二区三区试看| 精品无码国产自产在线观看水浒传| 97久久精品无码一区二区| 无码国产精品一区二区免费vr | av色欲无码人妻中文字幕| 国产精品亚洲专区无码唯爱网| 中文无码精品一区二区三区| 亚洲AV永久无码精品放毛片| 国产网红无码精品视频| 国模无码视频一区| 精品无码人妻夜人多侵犯18| 久久中文精品无码中文字幕| 亚洲AV无码一区二区三区网址| 亚洲综合无码精品一区二区三区| 西西大胆无码视频免费| 日韩一区二区三区无码影院| 亚洲Av无码乱码在线播放| 亚洲AV色无码乱码在线观看| 无码人妻精品一区二区三区东京热| 丰满少妇人妻无码专区| 亚洲爆乳大丰满无码专区| 亚洲AV无码国产精品麻豆天美 | 国产精品无码永久免费888| 亚洲AV无码成人精品区在线观看| 色综合热无码热国产| 亚洲精品偷拍无码不卡av| 亚洲AV无码久久精品色欲| 日韩精品无码一区二区三区四区| 日韩精品人妻系列无码av东京| 无码国产精成人午夜视频不卡 | 国产丝袜无码一区二区三区视频| 67194成是人免费无码| 无码人妻精品中文字幕免费东京热| 无码人妻精品一区二区三区99仓本| 狠狠噜天天噜日日噜无码| 日韩专区无码人妻| 国产精品亚洲αv天堂无码| 亚洲精品无码久久不卡| 最新中文字幕AV无码不卡| 亚洲爆乳无码专区| 无码AV天堂一区二区三区|