xlwings

时间:2018-05-31 12:27:48

标签: python excel xlwings

如何在xlwings格式化表格?例如,如果我想将excel样式“Light Blue,Table Style Light 2”添加到xlwings的Range对象中。

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

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

作为一个后续问题,如何在获取api对象后了解您拥有的各种选项?我所看到的唯一的地方就是其他SO问题和here,这基本上只是对这些问题的SO答案的汇编。

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

4 个答案:

答案 0 :(得分:1)

在斯蒂芬·考利(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')  

答案 1 :(得分:0)

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

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改变光标的位置。因此,如果有人知道如何做到这一点,我一定会感兴趣。例如,除非您可以更改光标位置,否则您无法使用我的解决方案在同一张纸上创建两个单独的表。

"替代方法" (AKA hack):我选择从工作表中保存数据,删除并重新制作工作表,然后将数据放回原处。在新工作表上,光标自动放置在A1中,因此在以这种方式移动光标后调用上面的代码会使A1(和周围的单元格)进入表格,这就是我需要的。

答案 2 :(得分:0)

首先进行sheet.range('D1').select()可以帮助您从A1移到其他单元格(例如使用鼠标),因此您可以将表格放置在所需的任何位置,而不仅仅是A1

答案 3 :(得分:0)

我的答案是对斯蒂芬·考利(Stephen Cowley)的回答的改进,这样您就不再需要他的“变通方法(又名hack)”。为了选择工作表的全部范围,请使用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