我正在尝试在python中格式化我在同一脚本中创建的excel文档。我发现的所有答案都涉及将现有工作簿加载到python中并从那里进行格式化。在我的脚本中,我正在编写整个未格式化的Excel工作表,保存文件,然后立即将文档重新加载到python格式化。这是我能找到的唯一解决方法,以便我可以拥有一个活动工作表。
writer=pd.ExcelWriter(file_name, engine='openpyxl')
writer.save()#saving my file
wb=load_workbook(file_name) #reloading file to format
ws=wb.active
ws.column_dimensions['A'].width=33
ws.column_dimensions['B'].width=16
wb.save(file_name)
这可以改变列宽等方面,但我想要一种格式化页面而不保存和重新加载的方法。当没有写入file_name时,有没有办法解决活动工作表的需求?我想要一种方法来删除第2行和第3行,但这可能是。
答案 0 :(得分:1)
Pandas在ExcelWriter中创建的对象取决于您提供的“引擎”。在这种情况下,您传递的是“openpyxl”,因此ExcelWriter正在创建一个openpyxl.Workbook()对象。您可以使用“Workbook()”在openpyxl中创建一个新的工作簿,如下所示:
https://openpyxl.readthedocs.io/en/default/tutorial.html#create-a-workbook
使用1张活动表创建。基本上是:
import openpyxl
wb = openpyxl.Workbook()
ws=wb.active
ws.column_dimensions['A'].width=33
ws.column_dimensions['B'].width=16
wb.save(file_name)
......会做这个工作
答案 1 :(得分:1)
您的标题具有误导性:您在Pandas工作并转储到Excel。 Pandas确实允许一些格式化,但是,因为它试图支持不同的Python库(openpyxl,xlsxwriter和xlwt),所以对此有限制。
为了完全控制,openpyxl支持Pandas' DataFrame对象:http://openpyxl.readthedocs.io/en/latest/pandas.html