如何为 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 中也可能实现。