每周我都会使用Python / Pandas生成一张大型excel表。但是,Pandas中的xls writer不允许因为专有格式而格式化excel表。目前,我必须在新生成的文件中按工作表运行工作表,并在前一周复制表格中的格式有点令人讨厌。
有没有办法(按照优先顺序):
答案 0 :(得分:1)
这是VBA的方法(来自answer中的sancho.s' s this question),假设每个工作簿中的工作表命名相同。您可以在Python中使用这些对象,或者至少在您复制的工作簿中创建此宏。
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
答案 1 :(得分:1)
我这样做:
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中的解决方案非常相似,因为它使用相同的函数,但通过COM完成,所以你完全使用Python。
在这段代码中我打开了工作簿。如果要打开工作簿,则应该输入:
filepath = r"path:\To\Excel\Workbook"
excelInstance.Workbooks.Open(filepath)