在 xlwings 中设置表格格式

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

如何在 xlwings 中设置表格格式?例如,如果我想将 excel 样式“浅蓝色,表格样式浅 2”添加到 xlwings 中的 Range 对象。

由于它不在 xlwings 文档中,我相信它看起来像这样(在连接到 wb 和所有内容之后):

xw.Range('A1').api. #Something goes here

作为后续问题,如何了解获取 api 对象后有哪些选项?我看到这样做的唯一地方是在其他SO问题中,并且这里基本上只是对此类问题的SO答案的汇编。

(这样我们就不用一直打扰你了,菲利克斯;))

python excel xlwings
4个回答
6
投票

添加 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')  

4
投票

我找到了解决办法。与社区分享,以防其他人有兴趣做同样的事情。解决方案基于他自己提出并回答的问题这里

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 (和周围的单元格)进入表格,这就是我所需要的。


1
投票

更新:我的答案是对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文件将被保存并关闭。


0
投票

首先执行

sheet.range('D1').select()
将帮助您从
A1
移动到其他单元格(就像使用鼠标),这样您就可以将表格放在您想要的任何位置,而不仅仅是
A1

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