一、OpenPyXL
比较习惯用这个来写公式,配合循环。
from openpyxl import load_workbook
book = load_workbook(excel_file_path)
sheet = book['sheet1']
for ind in range(1, sheet.max_row+1):
sheet['B'+str(ind)] = '=VLOOKUP(E{}, sheet2!B:F, 3, 0)'.format(ind)
另外,一些excel文件的美化,格式设置也都是有的:from openpyxl.styles import Font, colors, Alignment
二、xlwings
这个库很精致,具体去看 官网.
初始化设置:
import xlwings as xw
# 初始化设置
app = xw.App(visible=False, add_book=True)
wb = app.books.open(excel_file_path)
# do_sth_ ...
# 保存关闭&退出后台(类似selenium的driver后台)
wb.save(os.path.join(dir_path, 'name.xlsx'))
wb.close()
app.quit()
app.kill()
还可以进行整个区域性地赋值,如:wb.sheets['sheet1'].range('A2:F3').options(index=False).value = df
三、pandas相关
最后一个模块是pandas,这里不做叙述了。
单独说说 官网提示一次性读取多个sheet时,需要指定参数:sheet_name=None
,返回一个包含多个df的列表对象。
# 读取包含多sheet工作簿内固定列
wb = pd.read_excel(self.file, sheet_name=None)
for sheet in wb.keys():
wb[sheet] = wb[sheet]['col1', 'col2', 'col3']
print(wb[sheet].shape)
有写入操作时需指定一个ExcelWriter:
推荐下面的写法,with型:
参考资源
1.OpenpyXL Doc
2.xlwings Doc
3.pd.ExcelWriter Doc
4.pd.to_excel Doc