如何为 XlsxWriter 数据验证设置非相邻单元格范围
How to set non-adjacent cell range for XlsxWriter Data Validation
我正在使用 Python XlsxWriter 模块使用 data_validation
方法添加下拉列表,目前我已经设置好了,所以我将重复项放在 Pandas 系列并将其转换为列表并设置下拉列表的值,如下所示:
# set the column values to be a list
worksheet.data_validation(xlsx_header_letter + '2:' + xlsx_header_letter + str(1+n_rows),
{'validate': 'list', 'source': col_dropped_duplicates})
这工作正常,但是如果根据 Excel 列表超过 255 个字符,它将不允许它验证。相反,他们提到您应该使用这样的范围:
# Using 'source'.
worksheet.data_validation('B10', {'validate': 'list',
'source': '=$E:$G'})
上面的例子来自他们的文档。但是我无法创建这样的动态范围,因为我拥有的系列的值减少了(我在上面删除了重复项)。所以我只想 select 这些值的单元格。
这可能吗?
我尝试使用类似的东西:
worksheet.data_validation(xlsx_header_letter + '2:' + xlsx_header_letter + str(1+n_rows),
{'validate': 'list', 'source': '=($C:$C, $C:$C)'})
但是当我保存 excel 它已经损坏了。
更新:我还尝试使用删除的重复值创建另一个 sheet,并将范围设置为 sheet 的名称和范围。但它仍然保存损坏的文件。类似于:
worksheet.data_validation(
xlsx_header_letter + '2:' + xlsx_header_letter + str(1+n_rows), {'validate':
'list', 'source': '=' + new_sheet_name + '!A2:A4'})
The above example is from their docs. However I cannot create a dynamic range like this as the Series I have has reduced values (I dropped duplicates on it). So I want to be able to only select the cells for those values.
Is this possible?
据我所知,在 Excel 中是不可能的(即使除了 XlsxWriter)。
如果您尝试在 Excel 数据验证中 select 一个不连续的范围,您将收到如下消息:“您不能使用引用运算符(例如并集、交集、和范围)或数据验证标准的任何常量。
你可以自己验证一下。如果在 Excel 中可以实现,那么在 XlsxWriter 中也可能实现。
我正在使用 Python XlsxWriter 模块使用 data_validation
方法添加下拉列表,目前我已经设置好了,所以我将重复项放在 Pandas 系列并将其转换为列表并设置下拉列表的值,如下所示:
# set the column values to be a list
worksheet.data_validation(xlsx_header_letter + '2:' + xlsx_header_letter + str(1+n_rows),
{'validate': 'list', 'source': col_dropped_duplicates})
这工作正常,但是如果根据 Excel 列表超过 255 个字符,它将不允许它验证。相反,他们提到您应该使用这样的范围:
# Using 'source'.
worksheet.data_validation('B10', {'validate': 'list',
'source': '=$E:$G'})
上面的例子来自他们的文档。但是我无法创建这样的动态范围,因为我拥有的系列的值减少了(我在上面删除了重复项)。所以我只想 select 这些值的单元格。
这可能吗?
我尝试使用类似的东西:
worksheet.data_validation(xlsx_header_letter + '2:' + xlsx_header_letter + str(1+n_rows),
{'validate': 'list', 'source': '=($C:$C, $C:$C)'})
但是当我保存 excel 它已经损坏了。
更新:我还尝试使用删除的重复值创建另一个 sheet,并将范围设置为 sheet 的名称和范围。但它仍然保存损坏的文件。类似于:
worksheet.data_validation(
xlsx_header_letter + '2:' + xlsx_header_letter + str(1+n_rows), {'validate':
'list', 'source': '=' + new_sheet_name + '!A2:A4'})
The above example is from their docs. However I cannot create a dynamic range like this as the Series I have has reduced values (I dropped duplicates on it). So I want to be able to only select the cells for those values.
Is this possible?
据我所知,在 Excel 中是不可能的(即使除了 XlsxWriter)。
如果您尝试在 Excel 数据验证中 select 一个不连续的范围,您将收到如下消息:“您不能使用引用运算符(例如并集、交集、和范围)或数据验证标准的任何常量。
你可以自己验证一下。如果在 Excel 中可以实现,那么在 XlsxWriter 中也可能实现。