使用python的excel中单元格的多选选项

Posted

技术标签:

【中文标题】使用python的excel中单元格的多选选项【英文标题】:Multi select option for a cell in excel using python 【发布时间】:2016-07-23 22:24:15 【问题描述】:

我想创建一个excel,它应该有带有多选下拉列表的单元格。

例如如果给定单元格 options = [a", "b", "c", "d", "e"]。 编辑器选择“a”,则单元格中的值应为“a”。在同一个单元格的后续选择中,如果编辑器选择“b”,那么单元格中的最终值应该是“a,b”。

我可以使用下面的示例代码使用xlsxwriter 包创建一个下拉列表。但它不支持多选。

import xlsxwriter

workbook = xlsxwriter.Workbook('data_validate.xlsx')
worksheet = workbook.add_worksheet()

worksheet.write('A13', txt)
worksheet.data_validation('B13', 'validate':'list',
                                'source': ['open', "high", 'close'])

workbook.close()

这是来自xlsxwriter 文档的示例。

我浏览了其他库,例如 xlrdxlwtPyXLL 和其他一些库,但找不到任何可以支持多选或提供解决方法来实现相同功能的东西。

是否有任何内置库或在 excel 中实现此目的的方法。 我不想使用任何 windows 和 VB 依赖项。

任何帮助将不胜感激。

【问题讨论】:

退后一步:您想要在 Excel 中实际执行的操作是否可行?如果不是,那么针对 Excel 文件格式的 Python 模块将无法实现。 嗨 jmcnamara,在 Excel 中是可能的。 trumpexcel.com/2013/11/…供参考。 Somesh:该解决方案使用 VBA,所以我想说虽然它在技术上是可行的,但不是标准的 Excel 功能。 XlsxWriter 和 OpenPyXL 都支持一些基本的 VBA 功能,但不支持将 VBA 宏添加到数据验证的下拉对话框中。除了 Windows 上的 VBA 自动化(你说你不想使用),我认为目前没有非 Window/Mac Python 自动化模块可以做到这一点。 您好 jmcnamara:非常感谢您的意见。我真的很感激。 我假设您不希望下拉菜单显示 ["a,a", "a,b", "a,c", "a,d", "a, e"] 选择“a”后? 【参考方案1】:

Here/screenshot(s) 参考:

几个相当相似的 Q(下面的链接) - 但不完全是。


方法 A-C 先决条件:Office 365 兼容版 Excel

A - 按“原始/原始顺序”返回重复项*

=TEXTJOIN(",",1,C4:C23)

B - 和 A 一样,但是有序*

=TEXTJOIN(",",1,SORT(C4:C23))

C - 与 B 相同,但独一无二*

=UNIQUE(TEXTJOIN(",",1,UNIQUE(SORT(C4:C23))))


方法D

其他版本的 Excel - 可以找到有效的方法来设置大量验证列表并输入最终解决方案...

=TRANSPOSE(CONCATENATE(C4&",",C5&",",C6&",",C7&",",C8&",",C9&",",C10&",",C11&",",C12&" ,",C13&",",C14&",",C15&",",C16&",",C17&",",C18&",",C19&",",C20&",",C21&",",C22&" ,",C23))


资源(个人档案 RE:我以前的一些贡献):

    您的假设是各个下拉列表(与“最终结果单元格”相反)是独立的 - this 不是。 this 也是如此,尽管复杂度更高。 This 示例演示了如何组合多个数值(例如求和) 类似的例子here 如上所述,尽管有额外的怪癖/怪事依赖和单独的操作 - 跳跃这会有所帮助,祝你好运

【讨论】:

以上是关于使用python的excel中单元格的多选选项的主要内容,如果未能解决你的问题,请参考以下文章

用JS自制表格软件玩数据6. 单元格的多选

有没有办法在 python 的 streamlit 包的多选小部件中添加“全选”选项?

如何使用 Selenium-Python 从多选列表中选择多个选项?

TableView Swift 中的多选

JQuery_zTree如何设置节点多选

RobotFramework Selenium:如何从多选下拉列表中选择多个选项?