Pywin32 Excel 格式设置

0 投票
2 回答
11255 浏览
提问于 2025-04-17 08:17

我想通过pywin32来写入Excel表格。其实我已经可以顺利做到这一点了。但是我不知道怎么给表格中的一片单元格设置格式。我想把单元格里的内容居中对齐,还想给单元格填上颜色。我该怎么做呢?

提前谢谢你们!

2 个回答

0

我知道这个问题已经有12年了,但为了帮助那些像我一样在寻找答案的人,微软现在在这里列出了这些常量:https://learn.microsoft.com/en-us/office/vba/api/excel.constants

比如,xlCenter的值是-4108。

6

我之前没有用Python专门做过这个,但我猜你是在用COM自动化接口来操作Excel。

这个页面上有一个例子,似乎涵盖了对齐和给单元格填色的内容,虽然是用C#写的,但应该很容易改成Python。假设你有一个叫做sheet的工作表对象,还有一个叫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的官方参考。特别是,你可能会发现范围文档最有用。

撰写回答