乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Python操作Excel文件(0):盤點 | silaoA的博客

       看見就非常 2022-02-24

      python的一大優(yōu)勢是生態(tài)豐富,各種想要的庫都有人做好了,省掉造輪子的成本。對于Excel文件操作,也不例外。在Python中操作Excel有2條思路。

      1. 使用pywin32,內含win32com等多個包,使用微軟獨門的COM接口技術去操控系統(tǒng)中的Excel軟件。沿著這條思路,好處是除了Excel軟件,可以操控系統(tǒng)中任意支持COM接口的軟件,微軟全家桶是必然在列滴,其他就難說了;劣勢就是COM接口技術比較老舊了,僅在Windows平臺中使用,而且系統(tǒng)中必須已經安裝好Excel軟件。
      2. 使用讀寫表格文件的庫,如xlrd/xlwt/xlutils、openpyxl、pyexcelXlsxWriter等,這些庫封裝了對Excel文件的讀寫操作的函數(shù)。
        在Python中操作Excel文件在Python中操作Excel文件

      本文對第2條思路中常見的庫進行簡單評述與總結。

      0x00 xlrd/xlwt/xlutils

      簡介

      這3個必須捆綁到一起說。Simplistix公司開發(fā)了這3個庫,還提供了一個教程Working with Excel files in Python,教程是2009年出的,原網站內容基本都清空了,項目遷移到http://www.,教程遷移到https://github.com/python-excel/tutorial。

      • xlrd用于讀取Excel文件表格中的數(shù)據(jù),rd含義就是read,同時支持xls和xlsx兩種格式標準;
      • xlwt用于將數(shù)據(jù)寫入Excel文件,wt含義就是write,僅支持xls格式標準
      • xlutils依賴于xlrdxlwt,提供讀寫相關支持的工具集,比如類型轉換、workbook復制等。

      吐槽一句,這3個東西原本應該做到一起的,搞成3個麻煩。

      xls和xlsx格式

      注意文件后綴名跟格式標準沒關系,不是說文件擴展名用xlsx就一定是xlsx格式、用xls就一定是xls格式,而是兩種格式標準文件在數(shù)據(jù)組織方式、數(shù)據(jù)量支持等多方面就存在本質差異。微軟自Office 2007系列之后開始廣泛支持xlsx格式標準,使用xls格式標準的文件逐漸減少。
      xls是微軟私有的文件格式標準,以二進制方式直接保存文件,最大支持行數(shù)65536行、列數(shù)256列,而xlsx是基于Office Open XML標準的格式,實質是以zip壓縮包保存文件,只是擴展名使用了xlsx,可以用解壓軟件查看壓縮包內容,最大支持1048576行、16384列。

      主要特性

      xlrd/xlwt是以非常原始的方式進行Excel表格數(shù)據(jù)讀寫,可以類比為CPU編程的匯編語言、Web開發(fā)中的JavaScript,好處嘛就是運行速度相對快,缺點就是代碼要寫得比較啰嗦。xlrd/xlwt實現(xiàn)了Book(工作簿)、Sheet(表單)、Cell(單元格)多級對象,并將單元格分為文本(Text)、數(shù)字(Number)、日期(Date)、布爾(Boolean)、錯誤(Error)、空白(Empty/Blank)幾種類型。比較蛋疼的是,xlrd中的Book和xlwt中Book并非是同一類型,在Book對象中獲取Sheet對象的方法也不同,正因為如此,才需要xlutils做中間橋梁進行轉換。

      xlrd/xlwt對Excel文件支持較好,除了常規(guī)數(shù)據(jù)讀寫,還支持單元格字體、邊框線風格,還支持寫入表格公式,但實際使用表明大量公式不支持,讀入表格只能得到公式值,另外不支持圖表繪制。

      在數(shù)據(jù)訪問方面,xlrd/xlwt可以整行/列操作,單元格索引則完全依賴行列序號,但提供了函數(shù)用于行列序號與Excel風格單元格地址相互轉換。

      xlrd/xlwt/xlutils對外暴露的類型、方法、函數(shù)中規(guī)中矩,也沒有什么花式操作,用戶只了解最常用的小部分也能完成工作。

      0x01 openpyxl

      簡介

      openpyxl是由一群志愿者在業(yè)余時間開發(fā)維護的開源項目,用于在Python中原生地讀寫Excel xlsx/xlsm/xltx/xltm格式文件,項目地址 http:///openpyxl/openpyxl。openpyxl對Excel文件功能支持十分完備:除了常規(guī)數(shù)據(jù)讀寫,還支持單元格合并/分拆、插入圖片、(有限的)圖表繪制、公式寫入/解析、單元格注釋、只讀/只寫模式、單元格字體/對齊/填充/邊框線風格、條件格式、數(shù)據(jù)有效性等。

      主要特性

      在數(shù)據(jù)訪問方面,openpyxl支持整行/列操作,單元格索引既可以用行列序號,也可以用Excel風格單元格地址,內部自動轉換無需用戶操心。

      Excel功能支持方面,openpyxl堪稱完美,但最大痛點是不支持xls格式,而目前實際仍有不少xls格式文件在應用中。

      0x02 XlsxWriter

      簡介

      XlsxWriter是用于創(chuàng)建Excel xlsx格式文件的包,僅支持寫操作,不支持xls格式,非常適合于生成新表格文件的應用場合,對于讀出表格數(shù)據(jù)進行分析則無能為力。XlsxWriter開源,項目地址為 https://github.com/jmcnamara/XlsxWriter。

      在Excel功能支持方面十分完備,XlsxWriter支持單元格合并/分拆、圖片插入、圖表繪制、公式、單元格注釋、單元格數(shù)字格式/字體/對齊/填充/邊框線風格、條件格式、數(shù)據(jù)有效性、文本框插入、VBA等,還能與pandas集成進行數(shù)據(jù)分析,運行效率也很高。

      主要特性

      XlsxWriter在寫入數(shù)據(jù)方面設計很有特點,對外只暴露1個write方法,內部則根據(jù)要寫入的數(shù)據(jù)格式(Excel單元格所規(guī)定的數(shù)字、字符串、公式、空白、日期時間、鏈接等),回調相應的handler,同時允許用戶添加自定義handler,在匹配自定義數(shù)據(jù)格式時自動回調。這樣設計僅需掌握1個write方法便可搞定所有的寫操作,簡潔明了,保持靈活性同時不失統(tǒng)一性。

      在數(shù)據(jù)訪問方面,XlsxWriter支持整行/列操作,單元格索引既可以用行列序號,也可以用Excel風格單元格地址,內部自動轉換無需用戶操心。

      XlsxWriter對外暴露的類型、方法、函數(shù)相對較為簡潔,數(shù)量也不多,風格也很統(tǒng)一,用戶上手十分容易,提供的文檔和樣例十分豐富。

      0x03 pyexcel

      簡介

      與上述幾個庫所不同的是,pyexcel是一個包裝庫,底層依賴實際是xlrd/xlwt、openpyxlXlsxWriter、lxml等,經過封裝后對外提供一套API進行Excel文件讀寫,可類比為CPU編程的C語言、Web開發(fā)中的jQuery等,好處就是簡化了代碼編寫過程,缺點就是運行效率降低了。pyexcel開源,項目地址為https://github.com/pyexcel/pyexcel。

      除了支持Excel的xls、xlsx格式,還支持csv、tsv文本格式,以及sql數(shù)據(jù)庫表、Python內置的dict/嵌套list數(shù)據(jù)類型等,讓用戶專注于處理表格數(shù)據(jù),不必操心數(shù)據(jù)存儲介質的細節(jié),另外對字體/顏色/邊框風格、圖表繪制、公式等均不支持

      主要特性

      pyexcel被設計為插件式,模塊化地支持各種功能,默認安裝只有pyexcel、pyexcel-io兩個包,僅支持csv、tsv文本格式,對Excel表格支持就是通過各種插件完成的,用戶完全根據(jù)自己所需只安裝必要的插件而不影響整體功能。

      • 對xls的格式讀寫支持由pyexcel-xls插件完成,依賴于xlrd/xlwt;
      • 對xlsx的格式讀寫支持由pyexcel-xlsx插件完成,依賴于openpyxl;
      • 只寫xlsx的支持由pyexcel-xlsxw插件完成,依賴于XlsxWriter;
      • 只讀xlsx的支持由pyexcel-xlsxr插件完成,依賴于lxml;
      • 對ods(Open Document Spreadsheet,開放文檔表單,在Open Office等開源辦公軟件中使用廣泛)格式的讀寫支持由pyexcel-ods插件完成,依賴于odfpy;
      • 其他更多格式支持詳情,參考庫文檔。

      在數(shù)據(jù)訪問方面,pyexcel支持整個表單、整行/列、矩形區(qū)操作,單元格索引既可以用行列序號,也可以用Excel風格單元格地址,內部自動轉換無需用戶操心。

      pyexcel對外暴露的類型、方法、函數(shù)種類繁多,參數(shù)繁多,功能多樣,用戶可能只需要了解其中少部分就能完成工作。

      0x04 小結

      對以上幾個庫的主要特性和不足總結對此如下。
      Python中操作Excel的幾種常見庫對比Python中操作Excel的幾種常見庫對比

      上述幾個庫對數(shù)據(jù)分析即使有支持也十分有限,主要用來讀出/寫入文件,中間的數(shù)據(jù)分析過程嘛,則可以交給其他庫來完成,充分發(fā)揮Python生態(tài)極度豐富的優(yōu)勢,如numpy、pandas等。

      若是要處理的表格文件較少,最快捷的方式仍然是各種辦公軟件,微軟的Office、金山的WPS、開源的Open Office / Libre Office等。遇到大量重復性的表格文件,才有必要通過程序自動化。面對這么多Excel表格文件操作庫,該如何選擇?如果要格式和功能的廣泛支持,首選xlrd/xlwt/xlutilspyexcel;如果沒有兼容xls格式的包袱,首選openpyxl;如果只需要在應用中導出/生成表格,則首選XlsxWriter

      參考

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多