python xslxwriter 正在验证国际化布尔值

python xslxwriter validating an internationalzed boolean

我正在使用 xlsxwriter 将布尔值写入工作表:

worksheet.write_boolean(i, 9, export, style_normal)

当我在 Excel 中打开 xlsx 文件时(公司政策将语言设置为荷兰语), 布尔值在单元格中显示为 'WAAR' 或 'ONWAAR'

我正在尝试添加验证:

worksheet.data_validation('J{0}'.format(i+1), {'validate': 'list', 'source': [True, False]})

但是我在这个 data_validation 列表的 Excel 中看到的下拉列表包含 'True' 和 'False' 而不是 'WAAR' 和 'ONWAAR'。如果您 select 下拉列表中的值之一,单元格中的值将更改为 True 或 False。

如何验证与单元格 WAAR/ONWAAR 中具有相同(已翻译)值的布尔单元格?

如果我这样进行验证,它对使用不同语言设置的人不起作用吗?

worksheet.data_validation('J{0}'.format(i+1), {'validate': 'list', 'source': ['WAAR', 'ONWAAR']})

我认为在 Excel 中(或在 XlsxWriter 中进行扩展)不可能做您想做的事。

Excel 没有明确的布尔数据验证选项。创建布尔数据验证的常用方法是使用包含“TRUE,FALSE”的列表。但是,这些存储为公式字符串,我认为 Excel 在加载文件时不会翻译这些。

如果您确实认为这是可能的,并且您设法创建了一个 Excel 文件,该文件在一个语言环境中加载为“TRUE,FALSE”,在另一个语言环境中加载为“WAAR/ONWAAR”,然后打开一个功能请求在 XlsxWriter GitHub 上使用示例文件,我将实现它。

一种可能的解决方法是将实际的布尔值放入某些单元格(比如 A1 和 A2),然后在数据验证中使用范围引用,如“=A1:A2”。这应该在语言环境之间进行转换。

像这样:

import xlsxwriter

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

worksheet.write('A1', True)
worksheet.write('A2', False)


worksheet.data_validation('C1', {'validate': 'list', 'source': '=$A:$A'})

workbook.close()