如何在整个工作簿中使用Excel的格式化画笔

每个星期我都会用Python / Pandas生成一个大型的Excel表格。 但是,pandas的xls作者不允许用户使用专有格式来格式化excel表格。 目前,我必须在新生成的文件的工作表中去工作表,并在前一周复制表格中的格式有点讨厌。

有没有办法(按照优先顺序):

  1. 在Python中将所有格式从一个Excel表格复制到另一个表格
  2. 格式将工作簿中的所有工作簿绘制到第二个工作簿
  3. 这将是一个表格格式和链接,我可以更新和重新保存,但我希望像(1)或(2)的解决scheme。

我会这样做:

import win32com.client xlPasteFormats = -4122 xlPasteSpecialOperationNone = -4142 excelInstance = win32com.client.gencache.EnsureDispatch ("Excel.Application") workbook = excelInstance.Workbooks.Item(1) worksheet = workbook.Worksheets(1) worksheet2 = workbook.Worksheets(3) cells1 = worksheet.UsedRange cells2 = worksheet2.UsedRange cells1.Copy() cells2.PasteSpecial(xlPasteFormats, xlPasteSpecialOperationNone) 

这与VBA中的解决scheme非常相似,因为使用了相同的function,但通过COM来完成,因此您完全保留在Python中。

在这个代码中我打开了工作簿。 如果你想打开工作簿,你应该把:

 filepath = r"path:\To\Excel\Workbook" excelInstance.Workbooks.Open(filepath) 

这里是VBA的做法(来自sancho.s在这个问题上的答案 ),假设每个工作簿中的工作表被命名为相同的。 您可能能够在Python中使用这些对象,或者至less在您复制的工作簿中创build此macros。

 Sub FormatMAC() Dim wb1 As Workbook, wb2 As Workbook Set wb1 = Workbooks("Results_2012 - Template - Master.xlsx") Set wb2 = Workbooks("Copy of Results_2012 - Template1.xlsm") Dim ws1 As Worksheet, ws2 As Worksheet For Each ws1 In wb1.Worksheets Set ws2 = wb2.Worksheets(ws1.Name) ws1.Cells.Copy ws2.Cells.PasteSpecial (xlPasteFormats) Next ws1 End Sub