如何在 xlwings 中设置表格格式?例如,如果我想将 excel 样式“浅蓝色,表格样式浅 2”添加到 xlwings 中的 Range 对象。
由于它不在 xlwings 文档中,我相信它看起来像这样(在连接到 wb 和所有内容之后):
xw.Range('A1').api. #Something goes here
作为后续问题,如何了解获取 api 对象后有哪些选项?我看到这样做的唯一地方是在其他SO问题中,并且这里基本上只是对此类问题的SO答案的汇编。
(这样我们就不用一直打扰你了,菲利克斯;))
添加 Stephen Cowley 和 mouwsy 的答案,您可以为表格选择特定的单元格范围,而不仅仅是使用的范围,并一步设置表格格式。
wb = xw.('filename.xlsx') # Initialize a WorkBook
sht = wb.sheets['sheet_name'] # Grab the desired Sheet
# Select your custom range and style the table
tbl = sht.tables.add(sht.range('A1:A100'), table_style_name='TableStyleMedium6')
我找到了解决办法。与社区分享,以防其他人有兴趣做同样的事情。解决方案基于他自己提出并回答的问题这里。
import xlwings as xw
wb = xw.('filename.xlsx') # Initialize a WorkBook
sht = wb.sheets['sheet_name'] # Grab the desired Sheet
tbl = sht.api.ListObjects.add() # Adds table to Excel (returning a Table)
tbl.TableStyle = "TableStyleMedium5" # Set table styling
注意:奇怪的是,这会在 Excel 文档中的光标所在位置开始放置一个表格(上次打开时保存它?对此不确定)。我没有成功尝试通过 Python 更改光标的位置。因此,如果有人知道如何做到这一点,我肯定会感兴趣。例如,除非您可以更改光标位置,否则您无法使用我的解决方案在同一张纸上制作两个单独的表格。
“解决方法”(又名黑客):我选择保存工作表中的数据,删除并重新制作工作表,然后将数据放回去。在新工作表上,您的光标会自动放置在 A1 中,因此以这种方式移动光标后调用上面的代码将使 A1 (和周围的单元格)进入表格,这就是我所需要的。
更新:我的答案是对Stephen Cowley的答案和KAM的答案的改进,其中还集成了过去几年xlwings包的一些进步。您可以使用
ws.tables.add()
来设置表格格式。使用 used_range
选择填充内容的工作表的整个范围,或使用 ws.range("A1").expand()
或 ws.range("A1:C5")
更明确地定义范围。看这个例子:
import xlwings as xw
path = r"test.xlsx"
with xw.App(visible=False):
wb = xw.Book(path)
ws = wb.sheets[0]
ws.tables.add(ws.used_range, table_style_name='TableStyleMedium6')
wb.save(path)
wb.close()
格式化表格后,Excel文件将被保存并关闭。
首先执行
sheet.range('D1').select()
将帮助您从 A1
移动到其他单元格(就像使用鼠标),这样您就可以将表格放在您想要的任何位置,而不仅仅是 A1