python的excel庫_Python-Excel 模塊哪家強?

0. 前言

從網頁爬下來的大量數據需要清洗?

成堆的科學實驗數據需要導入 Excel 進行分析?

有成堆的表格等待統計?

作為人生苦短的 Python 程序員,該如何優雅地操作 Excel?

得益于前人的辛勤勞作,Python 處理 Excel 已有很多現成的輪子,使用較多的有:

xlwings

openpyxl

pandas

win32com

xlsxwriter

DataNitro

xlutils

上次我們介紹了下 xlutils,不少讀者留言表示有比它更好使的模塊,于是我們又把另外幾個都體驗了一遍。

本文將從運行環境、文檔操作、基本功能和性能等方面對以上模塊進行一次粗淺的比較,供大家參考。

1. 環境配置

再好的模塊,也需要在正確的 Python 版本以及 Excel 版本才可運行。

提醒及注意:xlutils 僅支持 xls 文件,即2003以下版本;

win32com 與 DataNitro 僅支持 windows 系統;

xlwings 安裝成功后,如果運行提示報錯“ImportError: no module named win32api”,請再安裝 pypiwin32 或者 pywin32 包;

win32com 不是獨立的擴展庫,而是集成在其他庫中,安裝 pypiwin32 或者 pywin32 包即可使用;

DataNitro 是 Excel 的插件,安裝需到官網下載。

2. 文檔操作

雖然大家都是操作 Excel,但即使最基本的新建文件、修改文件、保存文件等功能,在不同的庫中也存在差異。比如 xlsxwriter 并不支持打開或修改現有文件,xlwings 不支持對新建文件的命名,DataNitro 作為 Excel 插件需依托于軟件本身,pandas 新建文檔需要依賴其他庫等等。

3. 基本功能

由于設計目的不同,每個模塊通常著重于某一方面功能,各有所長。

xlwings

可結合 VBA 實現對 Excel 編程,強大的數據輸入分析能力,同時擁有豐富的接口,結合 pandas/numpy/matplotlib 輕松應對 Excel 數據處理工作。

openpyxl

簡單易用,功能廣泛,單元格格式/圖片/表格/公式/篩選/批注/文件保護等等功能應有盡有,圖表功能是其一大亮點,缺點是對 VBA 支持的不夠好。

pandas

數據處理是 pandas 的立身之本,Excel 作為 pandas 輸入/輸出數據的容器。

win32com

從命名上就可以看出,這是一個處理 windows 應用的擴展,Excel 只是該庫能實現的一小部分功能。該庫還支持 office 的眾多操作。需要注意的是,該庫不單獨存在,可通過安裝 pypiwin32 或者 pywin32 獲取。

xlsxwriter

擁有豐富的特性,支持圖片/表格/圖表/篩選/格式/公式等,功能與openpyxl相似,優點是相比 openpyxl 還支持 VBA 文件導入,迷你圖等功能,缺點是不能打開/修改已有文件,意味著使用 xlsxwriter 需要從零開始。

DataNitro

作為插件內嵌到 Excel 中,可完全替代 VBA,在 Excel 中使用 python 腳本。既然被稱為 Excel 中的 python,協同其他 python 庫亦是小事一樁。然而,這是付費插件...

xlutils

基于 xlrd/xlwt,老牌 python 包,算是該領域的先驅,功能特點中規中矩,比較大的缺點是僅支持 xls 文件。

4.性能

我們對幾個庫做了最基本的寫入和讀取測試,分別使用不同庫進行添加及讀取 1000行 * 700列 數據操作,得到所用時間,重復操作取平均值。另外在不同的電腦配置,不同的環境下結果肯定會有出入,數據僅供參考。

注:xlutils 最多只能寫入 256 列,即 1000*256,用時3.8秒,表現不錯;

DataNitro 與 xlsxwriter 不能打開 Excel 文件。

5. 小結

通過以上的分析,相信大家對幾個庫都有了簡單的了解。在編寫文章的過程中,筆者也在思考各個庫最適合的應用場景。不想使用 GUI 而又希望賦予 Excel 更多的功能,openpyxl 與 xlsxwriter,你可二者選其一;

需要進行科學計算,處理大量數據,建議 pandas+xlsxwriter 或者 pandas+openpyxl;

想要寫 Excel 腳本,會 Python 但不會 VBA 的同學,可考慮 xlwings 或 DataNitro;

至于 win32com,不管是功能還是性能都很強大,有 windows 編程經驗的同學可以使用。不過它相當于是 windows COM 的封裝,自身并沒有很完善的文檔,新手使用起來略有些痛苦。

你可根據自己的需求和生產環境,選擇合適的 Python-Excel 模塊。

6. 代碼示例

最后,附上一些演示代碼,大家可自行體會下不同模塊的使用。

6.1 xlwings基本代碼

import xlwings as xw

#連接到excel

workbook = xw.Book(r'path/myexcel.xlsx')#連接excel文件

#連接到指定單元格

data_range = workbook.sheets('Sheet1').range('A1')

#寫入數據

data_range.value = [1,2,3]

#保存

workbook.save()

6.2 xlsxwriter基本代碼

import xlsxwriter as xw

#新建excel

workbook = xw.Workbook('myexcel.xlsx')

#新建工作薄

worksheet = workbook.add_worksheet()

#寫入數據

worksheet.write('A1',1)

#關閉保存

workbook.close()

6.3 xlutils基本代碼import xlrd #讀取數據

import xlwt #寫入數據

import xlutils #操作excel

#----xlrd庫

#打開excel文件

workbook = xlrd.open_workbook('myexcel.xls')

#獲取表單

worksheet = workbook.sheet_by_index(0)

#讀取數據

data = worksheet.cell_value(0,0)

#----xlwt庫

#新建excel

wb = xlwt.Workbook()

#添加工作薄

sh = wb.add_sheet('Sheet1')

#寫入數據

sh.write(0,0,'data')

#保存文件

wb.save('myexcel.xls')

#----xlutils庫

#打開excel文件

book = xlrd.open_workbook('myexcel.xls')

#復制一份

new_book = xlutils.copy(book)

#拿到工作薄

worksheet = new_book.getsheet(0)

#寫入數據

worksheet.write(0,0,'new data')

#保存

new_book.save()

6.4 win32com基本代碼

import win32com.client as wc

#啟動Excel應用

excel_app = wc.Dispatch('Excel.Application')

#連接excel

workbook = excel_app.Workbooks.Open(r'e:/myexcel.xlsx' )

#寫入數據

workbook.Worksheets('Sheet1').Cells(1,1).Value = 'data'

#關閉并保存

workbook.SaveAs('newexcel.xlsx')

excel_app.Application.Quit()

6.5 openpyxl基本代碼

import openpyxl

# 新建文件

workbook = openpyxl.Workbook()

# 寫入文件

sheet = workbook.activesheet['A1']='data'

# 保存文件

workbook.save('test.xlsx')

6.6 DataNitro基本代碼

#單一單元格賦值

Cell('A1').value = 'data'

#單元區域賦值

CellRange('A1:B2').value = 'data'

其他文章及回答:

Crossin的編程教室

微信ID:crossincode

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454542.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454542.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454542.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

html如何設置滑輪效果,HTML中鼠標滾輪事件onmousewheel處理

滾輪事件是不同瀏覽器會有一點點區別,一個像Firefox使用DOMMouseScroll ,ff也可以使用addEventListener方法綁定DomMouseScroll事件,其他的瀏覽器滾輪事件使用mousewheel,下面我來給大家具體介紹。Firefox使用DOMMouseScroll,其他…

在OOW2009上尋寶撞大運續(床上篇)

歷時5天的Oracle Open World 2009終于,終于結束了。今天最后的節目是去聽一場金融分析師的會議,“只”開了不到6個鐘。去的時候是毛毛雨,回來的時候終于看到了一縷陽光。說夕陽無限好不大合適。用Larry Ellison的說法是“太陽落下的地方也是太…

skynet記錄6:定時器

稍后填坑 kernel中,每一次時鐘中斷會trap到kernel code,這個時間間隔稱之為jiffies,每秒鐘發生的次數為HZ 如果是4核,分配到每個核就是HZ/4 cat /boot/config-uname -r | grep ^CONFIG_HZ 輸出: CONFIG_HZ250 cat /pro…

html圖片平鋪不重復整個頁面,JSP網頁背景圖片怎樣不平鋪,不重復出現啊...

2016-07-10 13:12最佳答案1,Q:怎樣把別人網頁上的背景音樂保存下來?A:瀏覽該網頁后,在你的 Windows\Temporary Internet Files 文件夾下可以找到該背景音樂的緩存文件,拷貝出來即可使用。如果還是找不見該文件,可以打開網頁的源文件,找到音樂…

特征圖注意力_從數據結構到算法:圖網絡方法初探

作者 | 朱梓豪來源 | 機器之心原文 | 從數據結構到算法:圖網絡方法初探如果說 2019 年機器學習領域什么方向最火,那么必然有圖神經網絡的一席之地。其實早在很多年前,圖神經網絡就以圖嵌入、圖表示學習、網絡嵌入等別名呈現出來,其…

FFMPEG 源碼分析

FFMPEG基本概念: ffmpeg是一個開源的編解碼框架,它提供了一個音視頻錄制,解碼和編碼庫。FFMPEG是在linux下開發的,但也有windows下的編譯版本。 ffmpeg項目由以下幾部分組成: ffmpeg 視頻文件轉換命令行工具,也支持經過實時電視…

面試之 Redis匯總

簡介 Redis 持久化機制 RDB(Redis DataBase) AOF(Append-only file) Redis 4.0 對于持久化機制的優化 補充:AOF 重寫 二者的區別 二者優缺點 Memcache與Redis的區別都有哪些? 緩存雪崩、緩存穿透、…

Oracle 10g 問題集錦

監聽服務中Oracle數據庫之中使用最主要的一個服務,但是這個服務經常會出現錯誤,包括以后在工作之中此服務也會出現錯誤,故給出兩種常見錯誤的解決方案(故障1、故障2) 故障1: 注冊表使用了優化軟件(如&#…

iOS linker command failed with exit code 1 (use -v to see invocation)多種解決方案匯總

有時可能會遇到這種錯誤,關鍵是這種錯誤,有時只有這一句話,也不會給更多錯誤信息。 網上找了一些,總結了如下:(PS:以下是按照解決簡易程度排序,不代表出現概率) 1、bitco…

計算機二級python選擇題題庫_2018年計算機二級python題庫精編(1)

1正則中的^符號,用在一對中括號中則表示要匹配() A.字符串的開始 B.除中括號內的其它字符 C.字符串的結束 D.僅中括號內含有的字符 2靜態成員變量稱為類變量,非靜態成員變量稱為實例變量,下列關于一個類的靜態成員的描述中,不正確…

非常好用!世界上最快最好的視頻壓縮轉換工具(精品)

測試了20多款 各種視頻壓縮 截取軟件 真的是這款最快 快好用 效果也好!!! 最快的視頻轉換壓縮工具。 WisMencoder 能夠把您的電腦上的所有視頻格式,包括avi,mpg,rmvb,wmv,mp4,mov,dat等格式以最快的速度和最高的質量轉換為…

面試之 Mysql 匯總

事務相關 什么是事務? 事務:是由一組SQL語句組成的邏輯處理單元,事務具有以下4個屬性,通常簡稱為事務。事務的ACID屬性: (1)原子性(Atomicity):   事務是一…

Exchange Server 2003 部署手冊

1. 環境需求服務器: 域控制器1臺; Exchange Server服務器1臺。 IP和機器名配置: 域控制器:機器名:dc IP: 10.10.10.200 掩碼:255.255.255.0 網關:10.10.10.254 DNS:127.0.0.1 Exchange&#xff…

app中 html5 search 事件,事件 - Cordova中文網

事件Cordova給我們提供了很多的事件,可以在應用程序中使用。應用程序代碼中可以添加這些事件的監聽。例如:HTML文件Device Ready ExampleJS文件// example.js文件// 等待設備API庫加載好//function onLoad() {document.addEventListener("deviceready", o…

python標準庫os中的方法_python中OS常用方法

下面列出了一些在os模塊中比較有用的部分。它們中的大多數都簡單明了。 os.sep可以取代操作系統特定的路徑分隔符。windows下為 “\\” os.name字符串指示你正在使用的平臺。比如對于Windows,它是nt,而對于Linux/Unix用戶,它是posix。 os.get…

ffmpeg 過程分析

簡介 FFmpeg是一個集錄制、轉換、音/視頻編碼解碼功能為一體的完整的開源解決方案。FFmpeg的開發是基于Linux操作系統,但是可以在大多數操作系統中編譯和使用。FFmpeg支持MPEG、DivX、MPEG4、AC3、DV、FLV等40多種編碼,AVI、MPEG、OGG、Matroska、ASF等…

面試之 Python 基礎

1:為什么學習Python 家里有在這個IT圈子里面,也想讓我接觸這個圈子,然后給我建議學的Python,然后自己通過百度和向有學過Python的同學了解了Python,Python這門語言,入門比較簡單,它簡單易學&…

學習筆記(11月08日)--異常

四周三次課(11月8日)異常即是一個事件,該事件會在程序執行過程中發生,影響了程序的正常執行。一般情況下,在Python無法正常處理程序時就會發生一個異常。異常是Python對象,表示一個錯誤。當Python腳本發生異…

html瀏覽器的區別是什么意思,不同瀏覽器對css的識別有區別嗎?

不同瀏覽器對css的識別是有區別,因此針對不同的瀏覽器去寫不同的CSS。下面本篇文章給大家介紹一些常用CSS書寫技巧(不同瀏覽器之間的差異)。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。不同的瀏覽器,比如Int…

關于python

你是如何自學 Python 的? https://www.zhihu.com/question/20702054 Python 的練手項目有哪些值得推薦?https://www.zhihu.com/question/29372574 Python編碼規范 -- Python Style Guide http://www.cnblogs.com/lxw0109/p/Python-Style-Guide.htm…