2021-08-26 Python + Excel 数据处理 随笔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')

调用 pandas 的 read_excel() 读入;

sheet_name 参数若等于 None,则读入整个文件所有的 sheet, 数据格式为字典,key 为各个 sheet 的名称,内容为 dataframe 格式;

sheet_name 参数若等于其中某个 sheet 名称,则读入单个 sheet, 数据格式为 dataframe;

engine='openpyxl',指定使用 openpyxl 库进行读写,同时支持 .xls 和 .xlsx 格式。

读入 CSV 文件


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

与 excel 类似,默认第一行为表头列名。

写入 Excel 文件(简单格式)


import pandas as pd

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

df_data.to_excel(writer)

writer.save()

调用 pandas 将 dataframe 保存为 excel 文件,简单格式,数据校验、透视表等附加信息会丢失。

读写 Excel 文件(复杂格式)


import os

import win32com.client

# 获取excel进程

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

# 直接覆盖不提示

xlApp.DisplayAlerts = False

# 用xlApp打开xlsx 用于修改和写入数据

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) = '计算结果'

# 将 dataframe 数据一次性填充到 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')

# 结束excel进程

xlApp.quit()

del xlApp

win32com 本质上调用本地 excel 进程,因此必须关闭所有当前打开的 excel 窗口;

win32com 需要获取到文件的绝对目录,通常用 os.path 获取;

xlApp 获取到进程;xlBook 操作 excel 文件; sheet 操作单个 sheet; Cells 操作单元格; Range 操作单元格范围;

xlBook.Close(SaveChanges=1) 将 workbook 保存到当前文件;

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

win32com 操作 excel 文件的优点是对数据验证、透视表等附加信息无损,本质上等同于 excel 自身操作;缺点是系统必须安装 excel,速度慢,若程序出错会遗留 EXCEL.exe 进程,下次运行前必须手动清除( taskkill /im excel.exe /F ),暂时未找到完美的事后处理方案。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容