Pywin32 Excel 格式

问题描述 投票:0回答:2

我想通过 pywin32 写入 Excel 工作表。我实际上可以毫无问题地做到。但我无法格式化工作表中的一系列单元格。我想将单元格内的值居中对齐。我还需要用颜色填充单元格。我该怎么做?

提前致谢。

python excel pywin32
2个回答
6
投票

我之前没有专门使用 python 完成此操作,但我假设您正在使用 COM 自动化接口来实现卓越。

这个页面有一个例子,似乎涵盖了C#中的对齐和用颜色填充单元格,所以它应该很容易适应Python。假设您有一个名为 Sheet 的 Worksheet 对象,并且 Excel 自动化对象名为 Excel,我猜它可能看起来有点像这样:

//Format A1:D1 as center alignment, 
sheet.Range("A1", "D1").VerticalAlignment = Excel.XlVAlign.xlVAlignCenter
sheet.Range("A1", "D1").HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter
sheet.Range("A1", "D1").Interior.ColorIndex = Excel.XlColorIndex.Red

如果您无法从 python 访问 Excel.XlAlign 和 XlColorIndex 常量,那么您可以将它们替换为它们代表的特定整数,尽管我不完全确定您可以从哪里获取它们。可能来自 VBA 参考站点 或类似站点。 (虽然我提供的链接似乎不允许您展开列表中的每个条目,所以您可能需要寻找其他地方)

编辑:刚刚通过 python 控制台玩了一下 excel 自动化,它似乎工作正常:

>>> from win32com.client import Dispatch
>>> xlApp = Dispatch("Excel.Application")
>>> xlWb = xlApp.Workbooks.Add()
>>> xlSht = xlWb.WorkSheets(1)
>>> xlSht.Range("A1", "D1").VerticalAlignment = 1
>>> xlSht.Range("A1", "D1").Interior.ColorIndex = 6
>>> # The background color of A1-D1 should now be yellow
>>> xlSht.Cells(1, 1).VerticalAlignment = 1

如果你找不到关于各种对齐/颜色常量的任何好的参考,那么我就像这样在控制台上使用 python,然后在 excel 中打开生成的工作表并查看结果把事情弄清楚。

您可以在此处找到 Office 2003 自动化 API 的官方参考资料 具体来说,您可能会发现范围文档最有用。


0
投票

我知道这个问题已经有 12 年历史了,但为了任何寻找答案的人(比如我)的利益,微软现在在这里列出了这些常量:https://learn.microsoft.com/en-us/office/vba /api/excel.constants

(例如,xlCenter 为 -4108)

© www.soinside.com 2019 - 2024. All rights reserved.