python - 在 Python 中使用 XLWings 创建下拉列表

标签 python dropdown xlwings

我已经尝试过这段代码,但这是为了验证。我想要一个代码来创建一个新的下拉菜单。


    app = xw.App(visible=True)
    wb = app.books.open('Test.xlsx')
    sht = wb.sheets['Sheet1']
    Formula1='"Dog,Cat,Bat"'
    dv = sht.range('A1').api.Validation.Formula1

我尝试使用 openpyxl 它可以工作,但在文件打开时它不会保存文件。

最佳答案

xlwingswin32com的包装,与VBA类似。通过录制 VBA 宏以供引用,以下代码应该可以工作。

import xlwings as xw

app = xw.App(visible=True)
wb = app.books.open('Test.xlsx')
sht = wb.sheets['Sheet1']
Formula1='Dog,Cat,Bat' # remove the redundant "


# set up validation
sht.range('A1').api.Validation.Add(Type=3, Formula1=Formula1)

探索步骤:

录制一个宏,用于创建列表类型数据验证的默认步骤:

Sub Macro1()
'
' Macro1 Macro
'

'
    Range("A1").Select
    Application.WindowState = xlMaximized
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="Dog,Cat,Bat"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub

事实上,我们只做了两个关键步骤,其余部分保持默认:

  • 从验证条件下拉列表中选择List
  • 输入列表来源

所以,上面的代码应该简化为

' VBA
Range("A1").Validation.Add Type:=xlValidateList, Formula1:="Dog,Cat,Bat"

关于python - 在 Python 中使用 XLWings 创建下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67050455/

相关文章:

python - 如何在python中用该字符的单个实例替换字符的重复实例

R Shiny 组按钮,具有单独的悬停下拉选择

javascript - 在经典对话框中选择的下拉值在触摸 UI 对话框中不会显示相同的值

python - xlwings:从 Python 设置前景文本颜色

python - 如何在多维数组中找到 k 个最小数字的索引?

Python/C API gcc 编译警告未使用的变量

python - 取消引用 numpy 数组或列表的 void 指针

html - 如何在 Angular 中显示下拉列表以从 MySQL 表中选择一项?

python - Python 中的哪种数据结构可用于替换 Excel 2-dim 字符串/数量数组?

python - 从 xlsx 导入到 Pandas 时 header 为 'None' 的列