前言
使用pandas
库+openpyxl
库实现了csv
与excel
文件的互相转换,csv
转excel
后若数据超出了单元格的宽度,部分数据无法完整显示。需要手动打开Excel
文件,点击菜单栏开始→格式→自动调整列宽,再保存多个操作。本文介绍如何使用xlwings
库实现自动调整列宽的功能。
依赖
pip install xlwings
与excel文件处理的相关的库
库 | 说明 |
---|---|
pandas | 数据处理和分析库,特别适用于结构化数据(如表格数据) |
openpyxl | 用于读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件的Python 库。支持通过 Python 代码创建、修改和读取 Excel 文件,而无需依赖于 Microsoft Excel 应用程序。 |
xlwings | 用于在Python 和Excel 之间进行交互的库,可在Python 中控制Excel 进程,进行读写操作,甚至调用VBA 代码。 |
主要类
App类
App
类代表 Excel
应用程序实例,用于启动Excel
程序。
- 参数
visible
:用于设置Excel
程序的可见性 - 参数
add_book
:设置启动Excel
时是否新建工作簿
Books类
Books
类代表 Excel
中所有打开的工作簿的集合。可以访问、添加或关闭特定的工作簿。
add
():创建一个新的空白工作簿open
(fullname):打开一个已存在的工作簿save
():保存工作簿close
():关闭工作簿
Sheet 类
Sheet类代表工作簿中的单个工作表。可获取或修改工作表中的数据,或者对工作表进行操作如添加、删除等。
autofit
(axis):根据单元格内容,自动调整行高或列宽- axis=None 表示同时调整行高和列宽
- axis=‘rows’ 或 axis=‘r’ 表示仅调整行高
- axis=‘columns’ 或 axis=‘c’ 表示仅调整列宽
示例代码
单个Excel
文件自动调整列宽。
import xlwings as xw
def autofit(input_file):
# 启动Excel程序
app = xw.App(visible=False, add_book=False)
# 打开工作簿
book = app.books.open(input_file)
# 遍历工作表
for sheet in book.sheets:
# 自动调整列宽
sheet.autofit(axis='c')
# 保存工作簿
book.save()
# 关闭工作簿
book.close()
# 退出Excel程序
app.quit()