使用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
文档的示例。
我浏览了其他库,例如 xlrd
、xlwt
、PyXLL
和其他一些库,但找不到任何可以支持多选或提供解决方法来实现相同功能的东西。
是否有任何内置库或在 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中单元格的多选选项的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在 python 的 streamlit 包的多选小部件中添加“全选”选项?