<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          用 Python 幫運營妹紙快速搞定 Excel 文檔

          共 9621字,需瀏覽 20分鐘

           ·

          2020-12-29 12:19

          留言有禮,每天都會從留言中選出三位抽取6.6元紅包


          Microsoft Office 被廣泛用于商務和運營分析中, 其中 Excel 尤其受歡迎。Excel 可以用于存儲表格數(shù)據(jù)、創(chuàng)建報告、圖形趨勢等。在深入研究用 Python 處理 Excel 文檔之前,讓我們先了解一些基本術語:
          • Spreadsheet(電子表格) 或者 Workbook(工作簿) – 指文件本身(.xls or .xlsx).
          • Worksheet(工作表) 或者 Sheet(表)–工作簿中的單個內(nèi)容表,電子表格可以包含多個工作表。
          • Column(列) – 用英文字母標記的垂直數(shù)列,以“ A”開頭。
          • Row(行) – 從1開始以數(shù)字標記的水平數(shù)列。
          • Cell(單元格) – 列和行的組合,例如“ A1”。
          在本文中,我們來使用Python處理Excel電子表格。您將了解以下內(nèi)容:
          • Python 讀寫 Excel 的第三方庫
          • 從工作簿中獲取工作表
          • 讀取單元格數(shù)據(jù)
          • 遍歷行和列
          • 寫入 Excel 電子表格
          • 添加和刪除工作表
          • 添加和刪除行和列
          大多數(shù)公司和大學都使用Excel,它可以用多種不同方式使用,并可以使用Visual Basic for Applications(VBA)進行增強。但是,VBA有點笨拙,這就是為什么要學習如何將 Excel 與 Python 結(jié)合使用。
          現(xiàn)在讓我們了解如何使用 Python 處理 Microsoft Excel 電子表格!
          Python 處理 Excel 的第三方庫
          您可以使用 Python 創(chuàng)建、讀取和編寫 Excel 電子表格。但是,Python 的標準庫不支持使用 Excel,為此您需要安裝第三方軟件包。其中最受歡迎的是OpenPyXL,您可以在此處閱讀其文檔:
          • https://openpyxl.readthedocs.io/en/stable/
          OpenPyXL 并不是您唯一的選擇,其實還有其他幾個支持 Microsoft Excel 的軟件包:
          • xlrd – 用于讀取舊格式的 Excel (.xls) 文件
          • xlwt – 用于寫入舊格式的 Excel (.xls) 文件
          • xlwings – 用于新格式的Excel格式并具有宏功能
          幾年前,前兩個曾經(jīng)是 Python 操作 Excel 文檔的最受歡迎的庫。然而,這些軟件包的作者已停止維護它們。xlwings軟件包潛力很大,但是不能在所有平臺上都起作用,并且需要安裝 Microsoft Excel。

          您將在本文中使用 OpenPyXL,因為它是在持續(xù)開發(fā)和維護的。OpenPyXL 不需要安裝 Microsoft Excel,并且可以在所有平臺上使用。
          你可以用 pip 命令來安裝 OpenPyXL:
          $?python?-m?pip?install?openpyxl
          安裝完成后,讓我們了解如何使用 OpenPyXL 讀取 Excel 電子表格!
          從工作簿中獲取工作表
          第一步是找到一個與 OpenPyXL 一起使用的Excel文件,本文項目的Github存儲庫中為您提供了一個books.xlsx文件。您可以通過以下網(wǎng)址下載它:
          • https://github.com/driscollis/python101code/tree/master/chapter38_excel
          您也可以用自己的文件,盡管您自己文件的輸出內(nèi)容與本文中的示例并不一樣。
          下一步是編寫一些代碼來打開電子表格。為此請創(chuàng)建一個名為open_workbook.py的新文件,并將以下代碼添加到其中:
          #?open_workbook.py
          from?openpyxl?import?load_workbook
          def?open_workbook(path):
          ????workbook?=?load_workbook(filename=path)
          ????print(f'Worksheet?names:?{workbook.sheetnames}')
          ????sheet?=?workbook.active
          ????print(sheet)
          ????print(f'The?title?of?the?Worksheet?is:?{sheet.title}')
          if?__name__?==?'__main__':
          ????open_workbook('books.xlsx')
          在上述示例中,您從 openpyxl 導入 load_workbook()函數(shù),然后創(chuàng)建open_workbook()函數(shù),以將其導入Excel電子表格的路徑中。接下來,使用load_workbook()創(chuàng)建一個openpyxl.workbook.workbook.Workbook對象。該對象使您可以訪問電子表格中的工作表和單元格。它確實確實具有雙重工作簿的名稱,那不是錯字!
          open_workbook()函數(shù)的其余部分演示了如何打印出電子表格中所有當前定義的工作表,如何獲取當前活動的工作表以及如何打印該工作表的標題。
          運行此代碼時,將看到以下輸出:
          Worksheet?names:?['Sheet?1?-?Books']
          "Sheet?1?-?Books">
          The?title?of?the?Worksheet?is:?Sheet?1?-?Books
          既然已經(jīng)知道如何訪問電子表格中的工作表,下面就可以繼續(xù)訪問單元格數(shù)據(jù)了!
          讀取單元格數(shù)據(jù)
          使用Microsoft Excel時,數(shù)據(jù)存儲在單元格中。您需要使 Python 能訪問這些單元格,以便提取該數(shù)據(jù)。OpenPyXL使這個過程變得很簡單。
          創(chuàng)建一個名為workbook_cells.py的新文件,并添加以下代碼:
          #?workbook_cells.py
          from?openpyxl?import?load_workbook
          def?get_cell_info(path):
          ????workbook?=?load_workbook(filename=path)
          ????sheet?=?workbook.active
          ????print(sheet)
          ????print(f'The?title?of?the?Worksheet?is:?{sheet.title}')
          ????print(f'The?value?of?{sheet["A2"].value=}')
          ????print(f'The?value?of?{sheet["A3"].value=}')
          ????cell?=?sheet['B3']
          ????print(f'{cell.value=}')
          if?__name__?==?'__main__':
          ????get_cell_info('books.xlsx')
          此腳本將在 OpenPyXL 工作簿中加載 Excel 文件。您將獲取當前工作表,然后打印出其標題和幾個不同的單元格值。您可以通過以下方式訪問單元格:使用工作表對象,后跟方括號以及其中的列名和行號。例如,sheet ["A2"]將為您獲取第2行 A列的單元格。要獲取該單元格的值,請使用value屬性。
          注意:這段代碼使用的是 Python 3.8 中f-字符串格式化的新功能。如果使用較早的版本運行它,將會收到報錯消息。
          運行此代碼時,將獲得以下輸出:
          "Sheet?1?-?Books">
          The?title?of?the?Worksheet?is:?Sheet?1?-?Books
          The?value?of?sheet["A2"].value='Title'
          The?value?of?sheet["A3"].value='Python?101'
          cell.value='Mike?Driscoll'
          您可以嘗試使用它的某些其他屬性來獲取有關單元格的其他信息。將以下函數(shù)添加到文件中,并在最后更新條件語句來運行它:
          def?get_info_by_coord(path):
          ????workbook?=?load_workbook(filename=path)
          ????sheet?=?workbook.active
          ????cell?=?sheet['A2']
          ????print(f'Row?{cell.row},?Col?{cell.column}?=?{cell.value}')
          ????print(f'{cell.value=}?is?at?{cell.coordinate=}')
          if?__name__?==?'__main__':
          ????get_info_by_coord('books.xlsx')

          在此示例中,您將使用單元格對象的行和列屬性來獲取行和列信息。注意,“ A”列映射為“ 1”,“ B”映射為“ 2”,等等。如果要遍歷Excel文檔,則可以使用坐標屬性來獲取單元格名稱。

          運行此代碼時,輸出如下所示:

          Row?2,?Col?1?=?Title
          cell.value='Title'?is?at?cell.coordinate='A2'
          說到遍歷,讓我們來看一下接下來該下一步的方法!
          遍歷行和列
          有時,您將需要遍歷整個Excel電子表格或電子表格的某些部分。OpenPyXL允許您以幾種不同的方式執(zhí)行此操作。創(chuàng)建一個名為iterating_over_cells.py的新文件,并向其中寫入以下代碼:
          #?iterating_over_cells.py
          from?openpyxl?import?load_workbook
          def?iterating_range(path):
          ????workbook?=?load_workbook(filename=path)
          ????sheet?=?workbook.active
          ????for?cell?in?sheet['A']:
          ????????print(cell)
          if?__name__?==?'__main__':
          ????iterating_range('books.xlsx')
          在這里,您加載了電子表格,然后遍歷“ A”列中的所有單元格。對于每個單元格,將打印出單元格對象。如果要更精細地格式化輸出,則可以使用在上一節(jié)中提到的一些單元格屬性。
          這是通過運行此代碼得到的:
          'Sheet?1?-?Books'.A1>
          'Sheet?1?-?Books'.A2>
          'Sheet?1?-?Books'.A3>
          'Sheet?1?-?Books'.A4>
          'Sheet?1?-?Books'.A5>
          'Sheet?1?-?Books'.A6>
          'Sheet?1?-?Books'.A7>
          'Sheet?1?-?Books'.A8>
          'Sheet?1?-?Books'.A9>
          'Sheet?1?-?Books'.A10>
          #?output?truncated?for?brevity
          輸出被截斷,因為默認情況下它將打印出很多單元格。OpenPyXL通過使用iter_rows()iter_cols()函數(shù)提供了其他遍歷行和列的方法。這些方法接受下面幾個參數(shù):
          • min_row
          • max_row
          • min_col
          • max_col
          您還可以添加一個values_only參數(shù),該參數(shù)告訴OpenPyXL返回單元格而不是單元格對象的值。繼續(xù)創(chuàng)建一個名為iterating_over_cell_values.py的新文件,并將以下代碼添加到其中:
          #?iterating_over_cell_values.py
          from?openpyxl?import?load_workbook
          def?iterating_over_values(path):
          ????workbook?=?load_workbook(filename=path)
          ????sheet?=?workbook.active
          ????for?value?in?sheet.iter_rows(
          ????????????min_row=1,?max_row=3,
          ????????????min_col=1,?max_col=3,
          ????????????values_only=True,
          ????????):
          ????????print(value)
          if?__name__?==?'__main__':
          ????iterating_over_values('books.xlsx')
          此代碼演示了如何使用iter_rows()迭代Excel電子表格中的行并打印出這些行的值。運行此代碼時,將獲得以下輸出:
          ('Books',?None,?None)
          ('Title',?'Author',?'Publisher')
          ('Python?101',?'Mike?Driscoll',?'Mouse?vs?Python')
          輸出是一個Python元組,其中包含每一列中的數(shù)據(jù)。至此,您已經(jīng)了解了如何打開電子表格并從特定單元格以及通過迭代讀取數(shù)據(jù)?,F(xiàn)在,您準備學習如何使用OpenPyXL創(chuàng)建Excel電子表格!
          寫入 Excel 電子表格
          使用OpenPyXL寫入Excel電子表格不需要很多代碼。您可以使用Workbook()類創(chuàng)建電子表格。繼續(xù)創(chuàng)建一個名為Writing_hello.py的新文件,并添加以下代碼:
          #?writing_hello.py
          from?openpyxl?import?Workbook
          def?create_workbook(path):
          ????workbook?=?Workbook()
          ????sheet?=?workbook.active
          ????sheet['A1']?=?'Hello'
          ????sheet['A2']?=?'from'
          ????sheet['A3']?=?'OpenPyXL'
          ????workbook.save(path)
          if?__name__?==?'__main__':
          ????create_workbook('hello.xlsx')
          在這里,初始化Workbook()并獲取當前工作表。然后將“ A”列中的前三行設置為不同的字符串。最后,調(diào)用save()函數(shù)并向其傳遞新文檔保存到的路徑。恭喜你!您剛剛使用Python創(chuàng)建了一個Excel電子表格。
          接下來,讓我們看一下如何在工作簿中添加和刪除工作表!
          添加和刪除工作表
          許多人喜歡在工作簿中的多個工作表中處理數(shù)據(jù)。OpenPyXL支持通過其create_sheet()方法向Workbook()對象添加新工作表。
          創(chuàng)建一個名為creating_sheets.py的新文件,并添加以下代碼:
          #?creating_sheets.py
          import?openpyxl
          def?create_worksheets(path):
          ????workbook?=?openpyxl.Workbook()
          ????print(workbook.sheetnames)
          ????#?Add?a?new?worksheet
          ????workbook.create_sheet()
          ????print(workbook.sheetnames)
          ????#?Insert?a?worksheet
          ????workbook.create_sheet(index=1,
          ??????????????????????????title='Second?sheet')
          ????print(workbook.sheetnames)
          ????workbook.save(path)
          if?__name__?==?'__main__':
          ????create_worksheets('sheets.xlsx')
          在這里,您使用了兩次create_sheet()將兩個新的工作表添加到工作簿中。第二個示例顯示了如何設置工作表的標題以及在哪個索引處插入工作表。參數(shù)index = 1表示該工作表將在第一個現(xiàn)有工作表之后添加,因為它們的索引從0開始。
          運行此代碼時,將看到以下輸出:
          ['Sheet']
          ['Sheet',?'Sheet1']
          ['Sheet',?'Second?sheet',?'Sheet1']
          您可以看到新工作表已逐步添加到您的工作簿中。保存文件后,可以通過打開Excel或另一個與Excel兼容的應用程序來驗證是否存在多個工作表。
          在完成自動工作表創(chuàng)建過程之后,突然有了太多的工作表,因此讓我們來刪除一些工作表。有兩種方法可以刪除工作表, 繼續(xù)并創(chuàng)建delete_sheets.py文件,以了解如何使用 Python 的 del方法刪除工作表:
          #?delete_sheets.py
          import?openpyxl
          def?create_worksheets(path):
          ????workbook?=?openpyxl.Workbook()
          ????workbook.create_sheet()
          ????#?Insert?a?worksheet
          ????workbook.create_sheet(index=1,
          ??????????????????????????title='Second?sheet')
          ????print(workbook.sheetnames)
          ????del?workbook['Second?sheet']
          ????print(workbook.sheetnames)
          ????workbook.save(path)
          if?__name__?==?'__main__':
          ????create_worksheets('del_sheets.xlsx')
          此代碼將創(chuàng)建一個新的工作簿,然后向其中添加兩個新的工作表。再使用Python的del方法刪除workbook['Second sheet']。您可以通過查看在使用del命令之前和之后工作表列表的打印輸出來驗證它是否按預期工作:
          ['Sheet',?'Second?sheet',?'Sheet1']
          ['Sheet',?'Sheet1']
          從工作簿中刪除工作表的另一種方法是使用remove()方法。創(chuàng)建一個名為remove_sheets.py的新文件,并輸入以下代碼以了解其工作原理:
          #?remove_sheets.py
          import?openpyxl
          def?remove_worksheets(path):
          ????workbook?=?openpyxl.Workbook()
          ????sheet1?=?workbook.create_sheet()
          ????#?Insert?a?worksheet
          ????workbook.create_sheet(index=1,
          ??????????????????????????title='Second?sheet')
          ????print(workbook.sheetnames)
          ????workbook.remove(sheet1)
          ????print(workbook.sheetnames)
          ????workbook.save(path)
          if?__name__?==?'__main__':
          ????remove_worksheets('remove_sheets.xlsx')
          此時您可以通過將結(jié)果分配給sheet1來保留對所創(chuàng)建的第一個工作表的引用。然后稍后在代碼中將其刪除。另外,您也可以使用與之前相同的語法刪除該工作表,如下所示:
          workbook.remove(workbook['Sheet1'])
          無論選擇哪種方法刪除工作表,輸出內(nèi)容都將相同:
          ['Sheet',?'Second?sheet',?'Sheet1']
          ['Sheet',?'Second?sheet']
          現(xiàn)在,繼續(xù)學習如何添加和刪除行和列。
          添加、刪除行和列
          OpenPyXL具有幾種的方法,可用于在電子表格中添加、刪除行和列。這是在本節(jié)中將要學習的四種方法:
          • .insert_rows()
          • .delete_rows()
          • .insert_cols()
          • .delete_cols()
          每一個都可以使用下面兩個參數(shù):
          • idx –插入行或列的索引
          • amount–要添加的行數(shù)或列數(shù)
          要查看其工作原理,請創(chuàng)建一個名為insert_demo.py的文件,并向其中添加以下代碼:
          #?insert_demo.py
          from?openpyxl?import?Workbook
          def?inserting_cols_rows(path):
          ????workbook?=?Workbook()
          ????sheet?=?workbook.active
          ????sheet['A1']?=?'Hello'
          ????sheet['A2']?=?'from'
          ????sheet['A3']?=?'OpenPyXL'
          ????#?insert?a?column?before?A
          ????sheet.insert_cols(idx=1)
          ????#?insert?2?rows?starting?on?the?second?row
          ????sheet.insert_rows(idx=2,?amount=2)
          ????workbook.save(path)
          if?__name__?==?'__main__':
          ????inserting_cols_rows('inserting.xlsx')
          在這里,您將創(chuàng)建一個工作表,并在“ A”列之前插入一個新列。列的索引從1開始,而工作表的索引從0開始。這有效地將A列中的所有單元格移到B列。然后從第2行開始插入兩個新行。
          現(xiàn)在您知道了如何插入列和行,是時候來了解如何刪除它們了。
          要了解如何刪除列或行,請創(chuàng)建一個名為delete_demo.py的新文件并添加以下代碼:
          #?delete_demo.py
          from?openpyxl?import?Workbook
          def?deleting_cols_rows(path):
          ????workbook?=?Workbook()
          ????sheet?=?workbook.active
          ????sheet['A1']?=?'Hello'
          ????sheet['B1']?=?'from'
          ????sheet['C1']?=?'OpenPyXL'
          ????sheet['A2']?=?'row?2'
          ????sheet['A3']?=?'row?3'
          ????sheet['A4']?=?'row?4'
          ????#?Delete?column?A
          ????sheet.delete_cols(idx=1)
          ????#?delete?2?rows?starting?on?the?second?row
          ????sheet.delete_rows(idx=2,?amount=2)
          ????workbook.save(path)
          if?__name__?==?'__main__':
          ????deleting_cols_rows('deleting.xlsx')
          此代碼在多個單元格中創(chuàng)建文本,然后使用delete_cols()刪除A列。它還通過delete_rows()從第二行開始刪除兩行。在處理數(shù)據(jù)時,能夠添加、刪除列和行會非常有用。
          總結(jié)
          由于Excel在許多行業(yè)中得到廣泛使用,因此能夠使用Python與Excel文件進行交互是一項非常有用的技能,比如幫妹紙?zhí)幚磉\營數(shù)據(jù)。在本文中,您掌握了以下內(nèi)容:
          • Python 處理 Excel的第三方軟件包
          • 從工作簿中獲取工作表
          • 讀取單元格數(shù)據(jù)
          • 遍歷行和列
          • 寫入 Excel 電子表格
          • 添加和刪除工作表
          • 添加、刪除行和列
          OpenPyXL可以做的甚至比這里介紹的還要多。例如,您可以使用OpenPyXL將公式添加到單元格,更改字體并將其他類型的樣式應用于單元格。老老實實地閱讀文檔,并嘗試在自己的一些電子表格上使用OpenPyXL,以便充分利用其功能。
          END
          昨日留言中獎名單

          以上三位小伙伴,加小編微信:yumeko370?領取小小紅包一份哦!


          1、無套路,簡單領取百度網(wǎng)盤vip!親測有效

          2、python玩轉(zhuǎn)excel——如何讀取、寫入圖片

          3、微軟曝光新型惡意軟件/插件:你中招了嗎?(留言送書)


          轉(zhuǎn)發(fā),點贊,在看,安排一下?
          瀏覽 31
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  无码人妻一区二区三区四区老鸭窝 | 做爱免费网站 | 思思热这里在线 | 最新一区二区三区 | 77777色婷婷 |