python之Excel的處理

2021-10-22 19:45:28 字數 3585 閱讀 9973

之前在公司有一些自動化的任務,主要是從幾個excel中找資料,然後記錄到新的excel中。說真的學到了很多,感嘆python的強大,各個領域用python真是能省不少的事。

之前就想記錄來著,一直給忙忘了。現在在這裡回憶也鞏固以下之前的知識,希望也能幫助剛接觸的朋友更快的上手。ok,讓我們開始吧!

處理excel的庫還是有不少的,我在這裡給列出來:

import openpyxl

# 載入excel檔案

wb = openpyxl.load_workbook(excel_path)

# 1.獲取sheet

sheets = wb.worksheets # 返回乙個sheet物件列表,然後根據索引可以拿到sheet

sheet = wb[

'sheet1'

]# 根據sheet名拿到工作表

# 2.獲取單元格

a1 = sheet[

'a1'

].value # 切片方式獲取a1單元格的值

a1 = sheet.cell(row=

1, column=1)

.value # 指定行列獲取a1單元格的值

# 3.讀取範圍內的單元格

cells = sheet[

'a1'

:'b5'

]# 獲取a1到b5範圍內的單元格

# 4.遍歷單元格

# 當接收遍歷有多個時,個數應與列差個數保持一致,否則會報錯。例如:a2-c9有三列,所以需要三個變數接收。此時按行賦值

for c1, c2, c3 in sheet[

'a2'

:'c9']:

print

(f', , '

)# 挨個讀取單元格,需要注意的是外層迴圈是以行為單位,需要再次迴圈拿到值,或者通過索引取值。

for cells in sheet[

'a2'

:'c9']:

for cell in cells:

print

(cell.value)

# 5. 獲取包含資料的最大行號和列號,但是這個還是有些不足,如果單元格有樣式就不太準確了。

max_row = sheet.max_row

max_column = sheet.max_column

# 6. 單元格賦值

sheet[

'a1'

].value =

'a1'

# 將a1單元格的值設定為a1

sheet.cell(row=

2, column=1)

.value =

'a1'

# 7. 批量賦值, 以元組或列表巢狀的形式配合for迴圈新增。追加到有資料的最後一行

rows =((

'name'

,'age'

,'number'),

('張三',24

,'001'),

('李四',22

,'002'),

('王二',23

,'003'),

)for row in rows:

# 8. 過濾和排序

data =[[

'item'

,'colour'],

['pen'

,'brown'],

['book'

,'black'],

['plate'

,'white'],

['chair'

,'brown'],

['coin'

,'gold'],

['bed'

,'brown'],

['notebook'

,'white'],

]for r in data:

sheet.auto_filter.ref =

'a1:b8'

# 設定a1-b8為過濾列

sheet.auto_filter.add_filter_column(1,

['brown'

,'white'])

# 設定第一列過濾資料,'brown', 'white'

sheet.auto_filter.add_sort_condition(

'b2:b8'

)# 按b2-b8進行自動排序

# 9. 合併單元格

sheet.merge_cells(

'a1:b2'

)# 合併a1-b2單元格

# 10. 凍結窗格

sheet.freeze_panes =

'b2'

# 以b2單元格為基礎凍結工作表

更多openpyxl的操作可以參考這一篇,總結的特別全面。

這個庫我主要用到了它的查詢功能,當你需要在工作表中查詢某個值所在的行號時就能用得到。目前我只用了這乙個功能。

下面給個例子,感覺使用起來稍微有一點點複雜,需要自己多動手試試才能找到規律。

import pandas as pd

# sheet_name指定excel的sheet名,header指定以哪一行作為標題行

inner_excel = pd.read_excel(inner_path, sheet_name=

'インシデント臺帳'

, header=1)

# 上面指定標題行之後,可以使用下面的方法查詢某一標題所在列的值的行號

rows = inner_excel[inner_excel[

"案件番號"]==

"20290208-001"

].index.tolist(

)# 查詢20290208-001在案件番號列所在的行號列表

infos =

iflen

(rows)==0

: indexs = excel_event[excel_event[

"案件番號"

]== case_num]

.index.tolist()if

len(indexs)

>0:

'分類'

].values[indexs[0]

])'日野 浩'

) date64 = excel_event[

'クローズ\n日付'

].values[indexs[0]

]str

(date64.astype(

"datetime64[d]"))

.replace(

'-',

'/')

)return infos

return

'分類'

].values[rows[0]

])# 獲取分類列指定行號的值

'擔當者'

].values[rows[0]

])date64 = inner_excel[

'完了日'

].values[rows[0]

]str

(date64.astype(

"datetime64[d]"))

.replace(

'-',

'/')

)# 日期的處理,這裡也是乙個大坑。需要特別注意。

python 處理Excel資料

環境配置及可實現操作 注 datanitro作為外掛程式使用需依託軟體本身。參考 2 使用xlrd讀取 可以檢測是否已安裝了xlrd,用import命令 沒有安裝的進行安裝xlrd 安裝成功後,讀取檔案 import xlrd 引入模組 開啟檔案,獲取excel檔案的workbook 工作簿 物件 ...

Excel檔案處理之pandas

pandas可以用來處理多種儲存型別的資料,比如excel csv html sql.檢視pandas.read xx方法可以看出。本文主要總結對excel的處理。pandas依賴處理excel的xlrd等模組,這些模組安裝即可,不需要import。1讀取 1.1多個sheet import pan...

利用Python處理Excel資料

資料清洗 資料預處理 資料提取 資料篩選 資料彙總 資料統計 import pandas as pd import numpy as np import matplotlib.pyplot as plt from datetime import datetime from pandas import...