超強盤點!讓Excel效率起飛的5個Python庫

2021-03-01 IT外包

Excel作為Office的數據處理軟體,我們幾乎每天都在使用。雖然好用,但在大量錄入、處理數據的時候,效率未免有點低。因此,很多學了Python的同學,會利用Python的第三方庫來批量操作Excel,提升效率。

Python有很多支持操作Excel的第三方庫,今天推薦的5個庫,看看它們是如何讓Excel效率起飛的!

Xlwings

Xlwings是非常強大的處理Excel的庫,無論是Windows還是Mac,Excel還是WPS,都可以使用。

它功能非常齊全,能十分方便地新建、打開、修改、保存Excel,可以和matplotlib、numpy以及pandas無縫連接,支持讀寫numpy、pandas數據類型,將matplotlib可視化圖表導入到excel中。另外,還可以調用Excel文件中VBA寫好的程序,也可以讓VBA調用Python寫的程序。

import xlwings as xw #導入庫
app = xw.App(visible=True,add_book=False)
wb = app.books.add() #打開Excel程序
wb = xw.Book('example.xlsx') #打開已有工作簿
wb.save('example.xlsx') #保存工作簿
wb.close() #退出工作簿(可省略)
app.quit() #退出Excel
sht = wb.sheets[0] #引用工作表,括號內是第一個sheet名
rng = sht.range('a1')
#rng = sht['a1'] #引用單元格,第一行的第一列即a1
rng = sht.range('a1:a5') #引用區域
sht.range('a1').value = 'Hello' #單元格A1,寫入字符串『Hello』
sht.range('a1').value = [1,2,3,4] #默認按行插入:A1:D4分別寫入1,2,3,4
sht.range('a2').options(transpose=True).value = [5,6,7,8] #按列插入
sht.range('a6').expand('table').value = [['a','b','c'],['d','e','f'],['g','h','i']] #多行輸入
print(sht.range('a1:d4').value) #讀取A1:D4
rng = sht.range('a1').expand('table')
nrows = rng.rows.count
a = sht.range(f'a1:a{nrows}').value #讀取Excel第一列
ncols = rng.columns.count
fst_col = sht[0,:ncols].value #讀取Excel第一行
sht.range('A1').column #獲取單元格列標
sht.range('A1').row #獲取行標
sht.range('A1').column_width #獲取列寬
sht.range('A1').row_height #獲取行高
print(sht.range('A1').column ,sht.range('A1').row ,sht.range('A1').column_width ,sht.range('A1').row_height )
sht.range('A1').rows.autofit() #行高自適應
sht.range('A1').columns.autofit()#列寬自適應
sht.range('A1').color=(34,156,65) #給單元格A1上背景色
sht.range('A1').color #返回單元格顏色的RGB值
print(sht.range('A1').color)
sht.range('A1').color = None #清楚單元格顏色
print(sht.range('A1').color)
sht.range('A1').formula='=SUM(B6:B7)' #輸入公式,相應單元格執行結果
sht.range('A1').formula_array #獲取單元格公式
sht.range('A1').value=[['a1','a2','a3'],[1,2,3]] #向指定單元格位置寫入批量信息
sht.range('A1').expand().value #使用expand()方法讀取表中批量數據
print(sht.range('A1').expand().value)
import numpy as np
np_data = np.array((1,2,3))
sht.range('F1').value = np_data #寫入numpy array數據類型
import pandas as pd
df = pd.DataFrame([[1,2], [3,4]], columns=['a', 'b'])
sht.range('A5').value = df #將pandas DataFrame數據類型寫入excel
sht.range('A5').options(pd.DataFrame,expand='table').value #將數據讀取,輸出類型為DataFrame
import matplotlib.pyplot as plt
%matplotlib inline
fig = plt.figure()
plt.plot([1, 2, 3, 4, 5])
sht.pictures.add(fig, name='MyPlot', update=True) #將matplotlib圖表寫入到excel表格裡

xlrd

xlrd主要是讀取Excel,支持xlsx和xls格式的excel表格,可以實現指定表單、指定行列、指定單元格的讀取。

import xlrd #導入庫
data = xlrd.open_workbook(filename) #文件名以及路徑,如果路徑或者文件名有中文給前面加一個r拜師原生字符
# 獲取book中一個工作表
table = data.sheets()[0] #通過索引順序獲取
table = data.sheet_by_index(sheet_indx)) #通過索引順序獲取
table = data.sheet_by_name(sheet_name) #通過名稱獲取
names = data.sheet_names() #返回book中所有工作表的名字
data.sheet_loaded(sheet_name or indx) # 檢查某個sheet是否導入完畢
nrows = table.nrows #獲取該sheet中的有效行數
table.row(rowx) #返回由該行中所有的單元格對象組成的列表
table.row_slice(rowx) #返回由該列中所有的單元格對象組成的列表
table.row_types(rowx, start_colx=0, end_colx=None) #返回由該行中所有單元格的數據類型組成的列表
table.row_values(rowx, start_colx=0, end_colx=None) #返回由該行中所有單元格的數據組成的列表
table.row_len(rowx) #返回該列的有效單元格長度
ncols = table.ncols #獲取列表的有效列數
table.col(colx, start_rowx=0, end_rowx=None) #返回由該列中所有的單元格對象組成的列表
table.col_slice(colx, start_rowx=0, end_rowx=None) #返回由該列中所有的單元格對象組成的列表
table.col_types(colx, start_rowx=0, end_rowx=None) #返回由該列中所有單元格的數據類型組成的列表
table.col_values(colx, start_rowx=0, end_rowx=None) #返回由該列中所有單元格的數據組成的列表
table.cell(rowx,colx) #返回單元格對象
table.cell_type(rowx,colx) #返回單元格中的數據類型
table.cell_value(rowx,colx) #返回單元格中的數據

xlwt

xlwt主要是寫入Excel,可以實現指定表單、指定單元格的寫入,但保存的格式只支持xls格式。

import xlwt #導入模塊
workbook = xlwt.Workbook(encoding='utf-8') #創建workbook 對象
worksheet = workbook.add_sheet('sheet1') #創建工作表sheet
worksheet.write(0, 0, 'hello') #往表中寫內容,第一各參數 行,第二個參數列,第三個參數內容
workbook.save('students.xls') #保存表為students.xls
# 為內容設置style
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('sheet1')
# 設置字體樣式
font = xlwt.Font()
font.name = 'Time New Roman' # 字體
font.bold = True # 加粗
font.underline = True # 下劃線
font.italic = True # 斜體

style = xlwt.XFStyle()
style.font = font # 創建style
worksheet.write(0, 1, 'world', style)
workbook.save('students.xls') # 根據樣式創建workbook
# 合併單元格
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('sheet1')
# 通過worksheet調用merge()創建合併單元格
# 第一個和第二個參數單表行合併,第三個和第四個參數列合併,

# 合併第0列到第2列的單元格
worksheet.write_merge(0, 0, 0, 2, 'first merge')

# 合併第1行第2行第一列的單元格
worksheet.write_merge(0, 1, 0, 0, 'first merge')

workbook.save('students.xls')
# 設置單元格的對齊方式
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('sheet1')
alignment = xlwt.Alignment()
alignment.horz = xlwt.Alignment.HORZ_CENTER # 水平居中
alignment.vert = xlwt.Alignment.VERT_CENTER # 垂直居中
style = xlwt.XFStyle()
style.alignment = alignment
worksheet.col(0).width = 6666 # 設置單元格寬度
worksheet.row(0).height_mismatch = True
worksheet.row(0).height = 1000 # 設置單元格的高度
worksheet.write(0, 0, 'hello world', style)
workbook.save('center.xls')
# 設置單元格邊框
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('sheet1')

border = xlwt.Borders()
# DASHED虛線
# NO_LINE沒有
# THIN實線
border.left = xlwt.Borders.THIN
border.right = xlwt.Borders.THIN
border.top = xlwt.Borders.THIN
border.bottom = xlwt.Borders.THIN

style = xlwt.XFStyle()
style.borders = border
worksheet.write(1, 1, 'love', style)

workbook.save('dashed.xls')
# 設置單元格背景色
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('sheet1')
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = 3
style = xlwt.XFStyle()
style.pattern = pattern
worksheet.write(1, 1, 'shit', style)
workbook.save('shit.xls')
# 設置字體顏色
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('sheet1')

font = xlwt.Font()
# 設置字體為紅色
font.colour_index=xlwt.Style.colour_map['red']

style = xlwt.XFStyle()

style.font = font

worksheet.write(0, 1, 'world', style)
workbook.save('students.xls')

XlsxWriter

XlsxWriter可以用來寫文本、數字、公式並支持單元格格式化、圖片、圖表、文檔配置、自動過濾等特性,不過缺點也很明顯,不能用來讀取和修改Excel文件。

import xlsxwriter # 導入庫
work_book = xlsxwriter.Workbook('my first.xlsx') # 創建一個excel文件,文件名為"my first.xlsx"
work_sheet1 = work_book.add_worksheet() # 添加shhet1
work_sheet2 = work_book.add_worksheet('my excel.xlsx') # 添加sheet名字為my excel.xlsx
work_sheet3 = work_book.add_worksheet() # 不加參數,默認添加sheet3
# write_number:寫入數字
# write_blank:寫入空格
# write_formula:寫入公式
# write_datetime:寫入時間格式
# write_boolean:寫入邏輯數據
# write_url:寫入連結地址
work_sheet2.write_string(0, 0, 'this is write string!')
work_sheet2.write_number('A2', 123456)
work_sheet2.write_blank('A3', None)
work_sheet2.write_number('B1', 12)
work_sheet2.write_number('B2', 24)
work_sheet2.write_number('B3', 35)
work_sheet2.write_formula('B7', '=sum(b1:b5)')
work_sheet2.write_datetime(0, 3, datetime.datetime.strptime('2019-04-18', '%Y-%m-%d'),
work_book.add_format({'num_format': 'yyyy-mm-dd'}))
work_sheet1.write_boolean(0, 0, True)
work_sheet1.write_url('A2', 'http://www.toutiao.com')

openpyxl

openpyxl 是比較火的操作excel表格的Python庫,只支持03版本之後的 xlsx。

# 創建工作簿 Workbook
from openpyxl import Workbook
workbook = Workbook() # 創建一個工作簿對象
workbook.save('test.xlsx') # 保存這個工作簿,命名為test
# 打開已有工作簿
from openpyxl import load_workbook
workbook = load_workbook('test.xlsx') # #打開當前路徑下的test表格
# 創建表
# 方法1:插入到最後(default)
ws1 = wb.create_sheet("Mysheet")
# 方法2:插入到最開始的位置
ws2 = wb.create_sheet("Mysheet", 0)
# 選擇現有的表
from openpyxl import load_workbook
workbook = load_workbook('test.xlsx') # 打開當前路徑下的test表格
sheet = workbook['first_sheet'] # 選擇名字為first_sheet的表格頁
# 刪除表
from openpyxl import load_workbook
workbook = load_workbook('test.xlsx') # 打開當前路徑下的test表格
sheet = workbook['first_sheet'] # 選擇名字為first_sheet的表格頁
workbook.remove(sheet) #刪除這張表
# 訪問單元格
# 方法1
cell1 = sheet['A1']
# 方法2
cell2 = sheet.cell(row=1,column=2)
cell1.value = '123456' # 設置單元格的值
sheet.merge_cells('A1:A2') #合併A1和A2單元格

今天就暫時先推薦到這裡,有需要的同學趕緊收藏起來~~

相關焦點

  • Python 用xlwings庫處理Excel
    xlwing庫在網上查看了一些python處理excel庫資料,參考相關內容《Python讀寫Excel文件第三方庫匯總,你想要的都在這兒
  • 每個python人都離不開的12個python庫
    如果說python能取得今天的成就,一方面是它簡介的語法,更重要的一方面就是它豐富的第三方庫,可以毫不誇張的說,只要你能想到的任何一個功能模塊,都有對應的python庫,可以說正是因為有了豐富的python庫,python才發展得如此迅速,下面我們來看看python人最常用的20個python
  • 【校園雜工】Python腳本處理檔案圖片之完結篇:Python處理Excel
    表格接下來我們自動生成下圖所示的excel文件:讀寫excel要用到 xlrd和 xlwt庫,這兩個庫的名字分別是xls read和xls write的縮寫,這裡我們主要用到xlwt文件。write方法使用 write方法時,主要注意前兩個參數,第一個參數r表示excel中單元格的行序號,第二個參數表示excel中單元格的列序號,注意與excel
  • 詳解Python操作Excel文件
    前言本篇文章主要總結了一下利用python操作Excel文件的第三方庫和方法。常見庫簡介1.xlrdxlrd是一個從Excel文件讀取數據和格式化信息的庫,支持.xls以及.xlsx文件。7.win32comwin32com庫存在於pywin32中,是一個讀寫和處理Excel文件的庫。地址:http://pythonexcels.com/python-excel-mini-cookbook/8.DataNitroDataNitro是一個內嵌在Excel中的插件。
  • Python常用庫- xlrd庫
    xlrd是python語言中用於讀取excel表格內容的庫,還有一個xlwt庫用於將內容寫入excel。
  • PDF轉EXCEL,python的這個技能知道嗎?
    當在pdf上看到自己想用的表格,卻無法將其複製下來的時候,只能默默地打開excel對照著pdf表格的形式敲打出來,既費時又費力!這裡介紹如何用python程序將pdf上的表格自動轉化為excel表!1.使用的庫簡單介紹一下要使用的庫:pdfplumber 和xlwt1.pdfplumberpdfplumber使用來解析pdf的文字與表格。
  • Python利用openpyxl處理excel文件(openpyxl的安裝及簡介)
    但是試想,如果把上述excel公式變成諸如python中的if-else結構,其可讀性肯定是不容置疑的……今天,我們來介紹一款excel處理利器—openpyxl(python庫文件)。通過openpyxl的簡單安裝過程,熟悉python庫文件安裝的通用過程;(二)openpyxl的導入及簡單使用。學習openpyxl的簡單使用。
  • python操作excel:批量生成超連結
    excel設置超連結的函數是HYPERLINK,這裡用python批量生成超連結的思想其實很簡單,就是將公式寫入excel就行。
  • 5個奇妙的Python庫
    點擊上方「深度學習愛好者」,選擇加"星標"或「置頂」重磅乾貨,第一時間送達引言Python是一個非常神奇語言,無論我們要做什麼任務,python都有其解決方案,無論它與機器學習,數據可視化Python為各種簡單和困難的任務提供了大量的庫。大多數人都知道類似Pandas,Numpy,Matplotlib,Seaborn,OpenCV,Plotly這樣的庫,還有很多其他在機器學習中使用的庫。但是對於很多小的需求,python同樣有很多奇妙的庫。本文將分享一些在項目中遇到的一些庫,這些庫具有很高的可移植性,對於每個庫我都將用一個代碼段來介紹。
  • n種方式教你用python讀寫excel等數據文件
    點擊上方「濤哥聊Python」,選擇「星標」公眾號重磅乾貨,第一時間送達來源:Python大數據分析python處理數據文件的途徑有很多種,可以操作的文件類型主要包括文本文件(csv、txt、json等)、excel
  • n種方式教你用Python讀寫Excel等數據文件
    下面整理下python有哪些方式可以讀寫數據文件。1. read、readline、readlinesread()  :一次性讀取整個文件內容。推薦使用read(size)方法,size越大運行時間越長readline()  :每次讀取一行內容。
  • 如何用python實現excel中的vlookup功能?
    具體做的是什麼,暫時先賣個關子,請大家持續關注,後面你就知道了。因為刀哥是python初學者,對於需要用到的知識點,如果以前學過的要再複習一下,年紀大了嘛記性比較差,沒學過的新知識點要先學習一下,邊學邊用,所以做的速度比較慢,但是好在,哪怕慢,只要每天進步一點點,都是好的。
  • Python讀寫Excel表格,就是這麼簡單粗暴又好用
    python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。可從這裡下載https://pypi.python.org/pypi。下面分別記錄python讀和寫excel。
  • 10個被嚴重忽視的Python自帶庫
    python 的過程中,都會了解到 python 的一個強大的功能在於各種強大的第三方庫函數,大家只需要通過 pip install 即可安裝我們需要的庫函數。但通常我們更關注自己安裝的 python 庫,卻忽略了python自帶的庫或者內置函數。今天就來為大家介紹一下,十大被低估的 python 自帶庫/函數。1.
  • Python Excel 辦公自動化系列——win32com/pandas庫使用詳解
    01 Python Excel庫對比02 Python xlrd 讀取 操作Excel03 Python xlwt 寫入 操作Excel04 Python xlutils 修改 操作Excel05 Python xlwings 讀取 寫入 修改 操作Excel
  • 利用python操作Excel教程
    很多人都會使用excel來對數據做處理,但隨著python的日益強盛,不甘落後的我們也可以用python來完成這些工作,該教程目的是教會您用Python腳本來對excel做處理。案例一:以下是創建Pandas數據框並使用該to_excel() 方法將該數據寫入Excel文件的簡單示例 :結果顯示:
  • 盤點python數據工程師需要掌握的18個庫
    今天我們就來整理一下Python中在數據分析領域使用最廣泛的一些庫。掌握這些庫,進行數據分析相關任務時就可以隨心所欲了!所以使用 來安裝,然後使用 來安裝scrapy就可以了數據獲取Beautiful SoupBeautiful Soup也是一個從網站爬取數據的庫,他提供一些簡單的、python式的函數用來處理導航、搜索、修改分析樹等功能。它是一個工具箱,通過解析文檔為用戶提供需要抓取的數據,因為簡單,所以不需要多少代碼就可以寫出一個完整的應用程式。
  • Python讀寫Excel表格,就是這麼簡單粗暴又好用(文末送書)
    但是做著做著發現重複的勞動其實並沒有多大的意義,於是就想著寫個小工具幫著處理。以前正好在一本書上看到過使用Python來處理Excel表格,可惜沒有仔細看。於是我到處查找資料,基本解決了日常所需,終於算是完成了任務,因此撰寫此文就算是總結吧,主要記錄使用過程的常見問題及解決。python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。
  • 14-用Python 讀寫 Excel 文件
    和R這樣的分析工具了XlsxWriterxlrd&xlwt[2]OpenPyXL[3]Microsoft Excel API[4]介紹可以創建 Excel 2007 或更高版本的 XLSX 文件即 python-excel,含 xlrd、xlwt 和 xlutils 三大模塊,分別提供讀、寫和其他功能可以讀寫 Excel 2007 XLSX 和 XLSM 文件直接通過 COM
  • 巧用python win32com模塊操作excel文件
    Python操作excel文件的第三方庫有很多,小爬就常用openPyxl庫來操作已有的excel文件,它對xlsx、xlsm等格式的支持都較好