2021-08-26 Python + Excel 數(shù)據(jù)處理 隨筆02 - Excel 文件讀寫和修改

讀入 Excel 文件(簡單格式)


import?pandas?as?pd

dict_xl =?pd.read_excel('data.xlsx',sheet_name=None,engine='openpyxl')

df_xl =?pd.read_excel('data.xlsx',sheet_name='sheet1',engine='openpyxl')

調(diào)用 pandas 的 read_excel() 讀入;

sheet_name 參數(shù)若等于 None,則讀入整個文件所有的 sheet, 數(shù)據(jù)格式為字典,key 為各個 sheet 的名稱,內(nèi)容為 dataframe 格式;

sheet_name 參數(shù)若等于其中某個 sheet 名稱,則讀入單個 sheet, 數(shù)據(jù)格式為 dataframe;

engine='openpyxl',指定使用 openpyxl 庫進行讀寫,同時支持 .xls 和 .xlsx 格式。

讀入 CSV 文件


df_csv =?pd.read_csv("data.csv")??

與 excel 類似,默認(rèn)第一行為表頭列名。

寫入 Excel 文件(簡單格式)


import?pandas?as?pd

writer?=?pd.ExcelWriter('result.xlsx')

df_data.to_excel(writer)

writer.save()

調(diào)用 pandas 將 dataframe 保存為 excel 文件,簡單格式,數(shù)據(jù)校驗、透視表等附加信息會丟失。

讀寫 Excel 文件(復(fù)雜格式)


import os

import?win32com.client

#?獲取excel進程

xlApp?=?win32com.client.Dispatch('Excel.Application')

#?直接覆蓋不提示

xlApp.DisplayAlerts?=?False

#?用xlApp打開xlsx?用于修改和寫入數(shù)據(jù)

path?=?os.path.dirname(os.path.abspath(__file__))

xlBook?=?xlApp.Workbooks.Open(path+'\data.xlsx',?ReadOnly?=?False)

# 獲取 sheet1

sheet?=?xlBook.Worksheets('sheet1')

# 單元格賦值

sheet.Cells(1,1) = '計算結(jié)果'

# 將 dataframe 數(shù)據(jù)一次性填充到 sheet 中指定范圍

sheet_Range(sheet.Cells(2,1),sheet.Cells(2 +?df.shape[0]-1,?_col+df.shape[1]-1)).Value?=?df.values

#保存

#?xlBook.Close(SaveChanges=1)????

xlBook.SaveAs(path+'\result.xlsx')

#?結(jié)束excel進程

xlApp.quit()

del?xlApp

win32com 本質(zhì)上調(diào)用本地 excel 進程,因此必須關(guān)閉所有當(dāng)前打開的 excel 窗口;

win32com 需要獲取到文件的絕對目錄,通常用 os.path 獲??;

xlApp 獲取到進程;xlBook 操作 excel 文件; sheet 操作單個 sheet; Cells 操作單元格; Range 操作單元格范圍;

xlBook.Close(SaveChanges=1) 將 workbook 保存到當(dāng)前文件;

xlBook.SaveAs(path+'\result.xlsx') 將 workbook 另存為新的文件;

win32com 操作 excel 文件的優(yōu)點是對數(shù)據(jù)驗證、透視表等附加信息無損,本質(zhì)上等同于 excel 自身操作;缺點是系統(tǒng)必須安裝 excel,速度慢,若程序出錯會遺留 EXCEL.exe 進程,下次運行前必須手動清除( taskkill /im excel.exe /F ),暫時未找到完美的事后處理方案。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容