日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Python操作Excel 模塊,你猜哪家強(qiáng)?

 西北望msm66g9f 2020-01-08

本文授權(quán)轉(zhuǎn)載自清風(fēng)學(xué)Python
禁止二次轉(zhuǎn)載

大家好,我是老表

閱讀文本大概需要 10 分鐘

python操作excel的模塊簡直不要太多,

今天就為大家比較下各模塊之間的優(yōu)缺點(diǎn)。

  

xlutils & xlrd & xlwt   

最原始的莫過于兩位老牌黃金搭檔xlrd xlwt了,針對二者的封裝有如下模塊:

模塊官網(wǎng)

xlutils

https:///project/xlutils/

xlrd

https:///project/xlrd/

xlwt

https:///project/xlwt/

為什么把這三個(gè)一起說?
首先,xlutils封裝了xlrd xlwt,所以在使用前,會(huì)先下載這兩個(gè)依賴的模塊。
其次,這兩個(gè)模塊主要用于處理xls文件,而對xlsx的文件處理很挫,甚至xlwt不支持…
但為何到現(xiàn)在依然在使用這些模塊,因?yàn)樗麑ls文檔處理的優(yōu)勢….

win32com & DataNitro

模塊官網(wǎng)
win32comhttp:///python-excel-mini-cookbook/
DataNitrohttps:///

這兩個(gè)模塊又是怎么一回事兒?他倆僅支持windows系統(tǒng)環(huán)境
win32com這個(gè)模塊大家不算陌生了,windows下的操作,哪兒他都能插一腿…至于使用,就點(diǎn)擊鏈接自己看吧…
至于DataNitro,本來不想說的,但畢竟很多帖子都提到了它,我不寫不太好,但大家知道他是一個(gè)Excel 的插件,安裝也需單獨(dú)到官網(wǎng)下載即可….

pandas

模塊官網(wǎng)
pandashttps://www./

pandas作為數(shù)據(jù)分析利器,在處理excel方面也是犀利的一腿….

import  pandas  as pd
#方法一:默認(rèn)讀取第一個(gè)表單
df=pd.read_excel('lemon.xlsx')#這個(gè)會(huì)直接默認(rèn)讀取到這個(gè)Excel的第一個(gè)表單
data=df.head()#默認(rèn)讀取前5行的數(shù)據(jù)
print('獲取到所有的值:\n{0}'.format(data))#格式化輸出

#方法二:通過指定表單名的方式來讀取
df=pd.read_excel('lemon.xlsx',sheet_name='student')#可以通過sheet_name來指定讀取的表單
data=df.head()#默認(rèn)讀取前5行的數(shù)據(jù)
print('獲取到所有的值:\n{0}'.format(data))#格式化輸出

#方法三:通過表單索引來指定要訪問的表單,0表示第一個(gè)表單
#也可以采用表單名和索引的雙重方式來定位表單
#也可以同時(shí)定位多個(gè)表單,方式都羅列如下所示
df=pd.read_excel('lemon.xlsx',sheet_name=['python','student'])#可以通過表單名同時(shí)指定多個(gè)
# df=pd.read_excel('lemon.xlsx',sheet_name=0)#可以通過表單索引來指定讀取的表單
# df=pd.read_excel('lemon.xlsx',sheet_name=['python',1])#可以混合的方式來指定
# df=pd.read_excel('lemon.xlsx',sheet_name=[1,2])#可以通過索引 同時(shí)指定多個(gè)
data=df.values#獲取所有的數(shù)據(jù),注意這里不能用head()方法哦~
print('獲取到所有的值:\n{0}'.format(data))#格式化輸出

xlsxwriter

模塊官網(wǎng)
xlsxwriterhttps://xlsxwriter./

xlsxwriter擁有豐富的特性,支持圖片/表格/圖表/篩選/格式/公式等,功能與openpyxl相似,優(yōu)點(diǎn)是相比 openpyxl 還支持 VBA 文件導(dǎo)入,迷你圖等功能,缺點(diǎn)是不能打開/修改已有文件,意味著使用 xlsxwriter 需要從零開始。
代碼示例:

import xlsxwriter

# Create a workbook and add a worksheet.
workbook = xlsxwriter.Workbook('Expenses01.xlsx')
worksheet = workbook.add_worksheet()

# Some data we want to write to the worksheet.
expenses = (
    ['Rent', 1000],
    ['Gas',   100],
    ['Food',  300],
    ['Gym',    50],
)

# Start from the first cell. Rows and columns are zero indexed.
row = 0
col = 0

# Iterate over the data and write it out row by row.
for item, cost in (expenses):
    worksheet.write(row, col,     item)
    worksheet.write(row, col + 1, cost)
    row += 1

# Write a total using a formula.
worksheet.write(row, 0, 'Total')
worksheet.write(row, 1, '=SUM(B1:B4)')

workbook.close()

xlwings

模塊官網(wǎng)
xlwingshttp://docs./en/stable/

xlwings簡單強(qiáng)大,使用方便。而且搞笑的是,這是為數(shù)不多的模塊開發(fā)者,在平臺(tái)賣課的,哈哈….

image.png
import xlwings as xw

#連接到excel
workbook = xw.Book(r'path/myexcel.xlsx')#連接excel文件
#連接到指定單元格
data_range = workbook.sheets('Sheet1').range('A1')
#寫入數(shù)據(jù)
data_range.value = [1,2,3]
#保存
workbook.save()

openpyxl

模塊官網(wǎng)
openpyxlhttps://openpyxl./en/latest/

最后要說說個(gè)人比較常用,也很方便的一個(gè)excel處理模塊openpyxl….這個(gè)模塊突出的優(yōu)勢在于,對excel單元格樣式的設(shè)置方面特別詳細(xì)。所以針對openpyxl,詳細(xì)的介紹一下.

  • 寫一個(gè)工作簿

>>> from openpyxl import Workbook
>>> from openpyxl.utils import get_column_letter
>>>
>>> wb = Workbook()
>>>
>>> dest_filename = 'empty_book.xlsx'
>>>
>>> ws1 = wb.active
>>> ws1.title = 'range names'
>>>
>>> for row in range(1, 40):
...     ws1.append(range(600))
>>>
>>> ws2 = wb.create_sheet(title='Pi')
>>>
>>> ws2['F5'] = 3.14
>>>
>>> ws3 = wb.create_sheet(title='Data')
>>> for row in range(10, 20):
...     for col in range(27, 54):
...         _ = ws3.cell(column=col, row=row, value='{0}'.format(get_column_letter(col)))
>>> print(ws3['AA10'].value)
AA
>>> wb.save(filename = dest_filename)
  • 讀取現(xiàn)有工作簿

>>> from openpyxl import load_workbook
>>> wb = load_workbook(filename = 'empty_book.xlsx')
>>> sheet_ranges = wb['range names']
>>> print(sheet_ranges['D18'].value)
3
  • 插入圖像 (需要依賴pillow..)

>>> from openpyxl import Workbook
>>> from openpyxl.drawing.image import Image
>>>
>>> wb = Workbook()
>>> ws = wb.active
>>> ws['A1'] = 'You should see three logos below'
>>> # create an image
>>> img = Image('logo.png')
>>> # add to worksheet and anchor next to cells
>>> ws.add_image(img, 'A1')
>>> wb.save('logo.xlsx')
  • 使用樣式
    樣式用于在屏幕上顯示時(shí)更改數(shù)據(jù)的外觀。它們還用于確定數(shù)字的格式。
    樣式可以應(yīng)用于以下方面:

  • 字體設(shè)置字體大小,顏色,下劃線等

  • 填充以設(shè)置圖案或顏色漸變

  • 邊框設(shè)置單元格上的邊框

  • 單元格排列

  • 保護(hù)

以下是默認(rèn)值

>>> from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font
>>> font = Font(name='Calibri',
...                 size=11,
...                 bold=False,
...                 italic=False,
...                 vertAlign=None,
...                 underline='none',
...                 strike=False,
...                 color='FF000000')
>>> fill = PatternFill(fill_type=None,
...                 start_color='FFFFFFFF',
...                 end_color='FF000000')
>>> border = Border(left=Side(border_style=None,
...                           color='FF000000'),
...                 right=Side(border_style=None,
...                            color='FF000000'),
...                 top=Side(border_style=None,
...                          color='FF000000'),
...                 bottom=Side(border_style=None,
...                             color='FF000000'),
...                 diagonal=Side(border_style=None,
...                               color='FF000000'),
...                 diagonal_direction=0,
...                 outline=Side(border_style=None,
...                              color='FF000000'),
...                 vertical=Side(border_style=None,
...                               color='FF000000'),
...                 horizontal=Side(border_style=None,
...                                color='FF000000')
...                )
>>> alignment=Alignment(horizontal='general',
...                     vertical='bottom',
...                     text_rotation=0,
...                     wrap_text=False,
...                     shrink_to_fit=False,
...                     indent=0)
>>> number_format = 'General'
>>> protection = Protection(locked=True,
...                         hidden=False)
>>>



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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多