python excel操作库,可能是全网最完整的 Python 操作 Excel库总结!
openpyxl
xlrd/xlwt
xlwings
xlsxwriter
了解各個庫的異同,從而在不同場景下可以靈活使用
首先讓我們來整體把握下不同庫的特點
“
xlrd
xlwt
xlutils
.xls
xlwt
.xls
xlrd
.xls
xlutils
xlrd
xlwt
.xls
xlrd
xlwt
xlutils
xlwings
XlsxWriter
.xlsx
openpyxl
.xlsx
pandas
”
如果你懶得看詳細的對比過程,可以直接看最后的總結圖,然后拉到文末收藏點贊就算學會了
非標準庫
pip
多數模塊可以直接通過名字導入,有些模塊約定俗稱會使用縮寫:
import
import
import
as
import
import
import
as
xlutils
xlrd
xlwt
xlrd
.xls
xlwt
.xls
xlutils
xlrd
xlwt
copy
import
3.1 獲取文件
并不是所有7個模塊都可以讀取 Excel 文件,而即使能讀取Excel文件也要分不同后綴名進行討論,具體如下:
“
xlwt
xlutils
XlsxWriter
xlrd
.xls
.xlsx
xlwings
.xls
.xlsx
openpyxl
.xlsx
pandas
.xls
.xlsx
”
.xls
.xlsx
r'C:\xxx\Desktop\test.xls'
r'C:\xxx\Desktop\test.xlsx'
xlrd
xlrd
.xls
.xlsx
xlwings
xlwings
xlwings
xlwings
.xls
.xlsx
True
False
#?程序可見,只打開不新建工作薄
False
#?警告關閉
False
#?屏幕更新關閉
#?wb?=?app.books.open(xls_path)
#?保存文件
#?關閉文件
#?關閉程序
openpyxl
openpyxl
.xlsx
.xls
openpyxl.utils.exceptions.InvalidFileException: openpyxl does not support the old .xls file format, please use xlrd to read this file, or convert it to the more recent .xlsx file format.
pandas
pandas
.xls
.xlsx
'Sheet1'
'Sheet1'
.xlsx
import
import
'time?cost:?'
's'
xlwings
xlrd
openpyxl
3.2 獲取工作表
針對上述4個可以讀取 Excel 文件的模塊,進一步討論其獲取工作表 sheet 的方式
xlrd
可以通過 sheet 名查找:
"Sheet1"
也可通過索引查找:
0
xlwings
xlwings
#?在活動工作簿
#?在特定工作簿
openpyxl
.active
另外也可以通過工作表名指定獲取工作表:
'Sheet1'
pandas
pandas
'Sheet1'
簡單總結創建 Excel 文件的情況:
“
xlrd
xlutils
xlwt
.xls
.xlsx
xlwings
.xls
.xlsx
XlsxWriter
.xlsx
openpyxl
.xls
.xlsx
pandas
.xls
.xlsx
”
xlwt
xlwt
.xls
.xlsx
'ascii'
#?創建新的sheet表
"Sheet1"
xlwings
xlwings
.xls
.xlsx
保存工作簿、關閉工作簿、關閉程序
r'\new_practice.xlsx'
XlsxWriter
XlsxWriter
.xlsx
#?添加工作表
'Sheet1'
openpyxl
openpyxl
.xls
.xlsx
#?新工作簿中指定即創建工作表
pandas
pandas
pandas
.to_excel
.xls
.xlsx
r'C:\xxx\test1.xlsx'
簡單總結保存 Excel 文件的情況:
“
xlrd
xlwt
.xls
xlutils
xlrd
xlwt
.xls
xlwings
.xls
.xlsx
XlsxWriter
.xlsx
openpyxl
.xlsx
pandas
.xls
.xlsx
”
xlwt
xlwt
.xls
#?xls?=?xlwt.Workbook(encoding=?'ascii')
#?worksheet?=?xls.add_sheet("Sheet1")
"new_table.xls"
xlutils
xlutils
xlrd
xlwt
.xls
#?xls_path?=?r'C:\xxxx\test.xls'
#?xls?=?xlrd.open_workbook(xls_path)
'new_text.xls'
xlwings
xlwings
.xls
.xlsx
#?wb?=?app.books.open(xls_path)
#?保存文件
#?關閉文件
#?關閉程序
XlsxWriter
XlsxWriter
.xlsx
.close
#?xlsx?=?xlsxwriter.Workbook()
#?sheet?=?xlsx?.add_worksheet('Sheet1')
openoyxl
openpyxl
.xlsx
#?wb?=?openpyxl.load_workbook(xlsx_path)
#?wb?=?Workbook()
#?sheet?=?wb.active
'new_test.xlsx'
pandas
pandas
.xls
.xlsx
1
2
3
1
2
4
r'C:\xxxx\test1.xls'
r'C:\xxxx\test2.xlsx'
xlrd
xlwings
openpyxl
pandas
xlutils
.xls
xlrd
xlrd
xlutils
xlutils
xlrd
xlrd
xlwt
#?xls?=?xlrd.open_workbook(xls_path)
#?sheet?=?xlsx.sheet_by_name("Sheet1")
4
6
#?第5行第7列的單元格
4
6
for
in
xlwings
#?app?=?xw.App(visible=True,?add_book=False)
#?app.display_alerts?=?False
#?app.screen_updating?=?False
#?wb?=?app.books.open(xls_path)
#?sheet?=?wb.sheets.active
#?獲取單個單元格的值
'A1'
#?獲取橫向或縱向多個單元格的值,返回列表
'A1:A3'
#?獲取給定范圍內多個單元格的值,返回嵌套列表,按行為列表
'A1:C4'
#?獲取單個單元格的值
'A1'
#?獲取橫向或縱向多個單元格的值,返回列表
'A1:A3'
#?獲取給定范圍內多個單元格的值,返回嵌套列表,按行為列表
'A1:C4'
openpyxl
#?wb?=?openpyxl.load_workbook(xlsx_path)
#?wb?=?Workbook()
#?sheet?=?wb.active
#?一、指定坐標范圍的值
'A1:B5'
#?二、指定列的值
'A'
'A:C'
#?三、指定行的值
5
5
7
#?獲取單元格的值
for
in
pandas
pandas
pandas
.iloc()
.loc()
.ix()
0
1
1
'b'
'a'
'a'
#?有些版本取消了ix,可以用iat
還是先簡單總結對 Excel 文件寫入數據的情況:
“
xlrd
xlwt
xlutils
xlwt
xlwings
XlsxWriter
openpyxl
pandas
”
xlwt
xlutils
#?xls?=?xlrd.open_workbook(xls_path)
#?xls_xlutils?=?xlutils.copy.copy(xls)
#?sheet?=?xls_xlutils.sheet_by_name("Sheet1")
#?value?=?sheet.cell_value(4,?6)
#?print(value)
4
6
"新內容"
xlwings
#?app?=?xw.App(visible=True,?add_book=False)
#?app.display_alerts?=?False
#?app.screen_updating?=?False
#?wb?=?app.books.open(xls_path)
#?sheet?=?wb.sheets.active
#?寫入?1?個單元格
'A2'
'大明'
#?一行或一列寫入多個單元格
#?橫向寫入A1:C1
'A1'
1
2
3
#?縱向寫入A1:A3
'A1'
True
1
2
3
#?寫入范圍內多個單元格
'A1'
'table'
1
2
3
4
5
6
XlsxWriter
new_format
#?xlsx?=?xlsxwriter.Workbook()
#?sheet?=?xlsx?.add_worksheet('Sheet1')
#?一、寫入單個單元格
#?A1:從A1單元格開始插入數據,按行插入
'A1'
#?A1:從A1單元格開始插入數據,按列插入
'A1'
openpyxl
#?wb?=?openpyxl.load_workbook(xlsx_path)
#?wb?=?Workbook()
#?sheet?=?wb.active
#?一、寫入單元格
'A1'
'業務需求'
#?二、寫入一行或多行數據
1
2
3
1
2
3
4
5
6
依舊簡單總結對 Excel 文件樣式調整的情況:
“
xlrd
xlutils
xlutils
xlwt
xlwt
xlwings
XlsxWriter
openpyxl
pandas
”
xlwt
xlwt
#?字體部分
#?初始化樣式
#?為樣式創建字體
'Times?New?Roman'
#字體
True
#加粗
True
#下劃線
True
#斜體
#?設置樣式
#?使用樣式
4
6
"新內容1"
#?邊框部分
#?設置線型
#?設置樣色
0x40
0x40
0x40
0x40
#
#?使用樣式
5
8
"新內容2"
xlwings
xlwings
#?獲取顏色
'C1'
#?設置顏色
'C1'
255
0
120
#?清除顏色
'C1'
None
8.3 XlsxWriter 調整樣式
XlsxWriter
'bold'
True
#?字體加粗
'border'
1
#?單元格邊框寬度
'align'
'left'
#?水平對齊方式
'valign'
'vcenter'
#?垂直對齊方式
'fg_color'
'#F4B084'
#?單元格背景顏色
'text_wrap'
True
#?是否自動換行
8.4 openpyxl 調整樣式
openpyxl
#?字體樣式
from
import
'A1'
'Arial'
12
True
True
'FF0000'
#?段落對齊
from
import
'B2'
'center'
'center'
45
True
#?邊框樣式
from
import
'B2'
'thin'
'FF0000'
'dashed'
簡單總結對 Excel 文件插入圖片的情況:
“
xlrd
xlutils
xlutils
xlwt
xlwt
.bmp
xlwings
XlsxWriter
openpyxl
pandas
”
xlwt
xlwt
.bmp
"test.bmp"
2
3
2
2
0.5
0.5
insert_bitmap(img, x, y, x1, y1, scale_x, scale_y)
img
x
y
x1 y1
scale_x scale_y
xlwings
xlwings
r'C:\\xxx.jpg'
#?也可以給定位置插入
r'C:\\xxx.jpg'
'A2'
'A2'
100
100
9.3 XlsxWriter 插入圖片
第一個參數是插入的起始單元格,第二個參數是圖片文件的絕對路徑
'A1'
r'C:\\xxx.jpg'
9.4 openpyxl 插入圖片
openpyxl
from
import
'test.jpg'
180
360
#?設置圖片的寬和高
'A2'
#?往A2單元格插入圖片
以上就是根據不同 Python 模塊,對常見的 Excel 操作進行對比的全部內容,最終結果匯總如下表所示
本文目的并不是要評出一個最好的庫,僅是從不同角度對不同庫進行對比,希望能夠讓大家了解各個庫所擅長的工作
pandas
openpyxl
只有充分了解不同工具的特點,才能夠在不同的場景下靈活運用不同的方法來高效解決問題!
- EOF -
推薦閱讀
點擊標題可跳轉
再見 VBA!神器工具統一 Excel 和 Python
向 Excel 說再見,神級編輯器統一表格與 Python
我用 Python 的 Seaborn 庫,繪制了 17 個超好看圖表!
覺得本文對你有幫助?請分享給更多人
推薦關注「Python開發者」,提升Python技能
點贊和在看就是最大的支持
??
總結
以上是生活随笔為你收集整理的python excel操作库,可能是全网最完整的 Python 操作 Excel库总结!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 判断二叉树是否是完全二叉树c语言_完全二
- 下一篇: python个人网站系统_利用基于Pyt