在 xlwings 中格式化 Table
Format Table in xlwings
如何在 xlwings 中格式化 table?例如,如果我想将 excel 样式 "Light Blue, Table Style Light 2" 添加到 xlwings.
的 Range 对象中
因为它不在 xlwings 文档中,我相信它看起来像这样(在连接到 wb 和所有东西之后):
xw.Range('A1').api. #Something goes here
作为后续问题,一个人如何了解在抓住 api 对象后有哪些选项?我唯一看到这样做的地方是在其他 SO 问题和 here 中,这基本上只是对这些问题的 SO 答案的汇编。
(这样我们就不用一直打扰你了,Felix ;))
我找到了解决办法。与社区分享,以防其他人有兴趣做同样的事情。解决方案是根据自己提出和回答的问题 .
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 文档中光标所在的位置放置一个 table(上次您在打开时保存它?对此不确定)。我没有运气尝试通过 Python 更改光标的位置。因此,如果有人知道如何做到这一点,我肯定会感兴趣。例如,除非您可以更改光标位置,否则您不能使用我的解决方案在相同的 sheet.
上制作两个单独的 table
"Workaround"(也称为 hack):我选择保存 sheet 中的数据,删除并重新制作 sheet,然后将数据放回原处。在新的 sheets 上,您的光标自动放置在 A1 中,因此以这种方式移动光标后调用上面的代码将使 A1(和周围的单元格)进入 table,这正是我需要的.
首先执行 sheet.range('D1').select()
会帮助您从 A1
移动到其他单元格(例如使用鼠标),这样您就可以将 table 放在任何您想要的地方,而不仅仅是 [=11] =]
我的回答是对 Stephen Cowley 的回答的改进,这样您就不再需要他的“解决方法(又名 hack)”。为了 select 工作表的完整范围,请使用 used_range。只有一行sht.used_range.select()
。看这个例子:
import xlwings as xw
wb = xw.('filename.xlsx') # Initialize a WorkBook
sht = wb.sheets['sheet_name'] # Grab the desired Sheet
sht.used_range.select() # Select the used range of the sheet.
tbl = sht.api.ListObjects.add() # Adds table to Excel (returning a Table)
tbl.TableStyle = "TableStyleMedium5" # Set table styling
除了 Stephen Cowley 和 mouwsy 的回答之外,您还可以 select 为您的 table 设置特定范围的单元格,而不仅仅是使用的范围,并将 table 格式化为一个步骤.
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')
如何在 xlwings 中格式化 table?例如,如果我想将 excel 样式 "Light Blue, Table Style Light 2" 添加到 xlwings.
的 Range 对象中因为它不在 xlwings 文档中,我相信它看起来像这样(在连接到 wb 和所有东西之后):
xw.Range('A1').api. #Something goes here
作为后续问题,一个人如何了解在抓住 api 对象后有哪些选项?我唯一看到这样做的地方是在其他 SO 问题和 here 中,这基本上只是对这些问题的 SO 答案的汇编。
(这样我们就不用一直打扰你了,Felix ;))
我找到了解决办法。与社区分享,以防其他人有兴趣做同样的事情。解决方案是根据自己提出和回答的问题
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 文档中光标所在的位置放置一个 table(上次您在打开时保存它?对此不确定)。我没有运气尝试通过 Python 更改光标的位置。因此,如果有人知道如何做到这一点,我肯定会感兴趣。例如,除非您可以更改光标位置,否则您不能使用我的解决方案在相同的 sheet.
上制作两个单独的 table"Workaround"(也称为 hack):我选择保存 sheet 中的数据,删除并重新制作 sheet,然后将数据放回原处。在新的 sheets 上,您的光标自动放置在 A1 中,因此以这种方式移动光标后调用上面的代码将使 A1(和周围的单元格)进入 table,这正是我需要的.
首先执行 sheet.range('D1').select()
会帮助您从 A1
移动到其他单元格(例如使用鼠标),这样您就可以将 table 放在任何您想要的地方,而不仅仅是 [=11] =]
我的回答是对 Stephen Cowley 的回答的改进,这样您就不再需要他的“解决方法(又名 hack)”。为了 select 工作表的完整范围,请使用 used_range。只有一行sht.used_range.select()
。看这个例子:
import xlwings as xw
wb = xw.('filename.xlsx') # Initialize a WorkBook
sht = wb.sheets['sheet_name'] # Grab the desired Sheet
sht.used_range.select() # Select the used range of the sheet.
tbl = sht.api.ListObjects.add() # Adds table to Excel (returning a Table)
tbl.TableStyle = "TableStyleMedium5" # Set table styling
除了 Stephen Cowley 和 mouwsy 的回答之外,您还可以 select 为您的 table 设置特定范围的单元格,而不仅仅是使用的范围,并将 table 格式化为一个步骤.
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')