如何强制Excel插入xs:双值123.45为123.45,而不是12345使用丹麦语区域设置
TL; DR
我有一个模式和<value>123.45</value>
的XML文件。 该模式说这是一个双。
如果在导入XML文件时区域格式设置为“丹麦语(丹麦)”,Excel仍然决定将其解释为12345。 (适用于“英语(美国)”)。 Excel决定在丹麦语中,小数点分隔符( 也是XML文件 )是逗号,而不是句号。
有什么办法可以修改XML来强制Excel做正确的事情,并将123.45解释为123.45而不pipe区域设置如何? 我想避免两种XML风格取决于用户的Windows设置。 🙁
还是有没有人有更好的论坛问? 谷歌searchexcel和小数点分隔符给出了很多很多关于如何用','或'。' 显示数字的新手post,而不是如何控制导入,所以我在这里尝试。
细节
(我认为) '。' 是表示XML双精度分隔符的唯一有效方法
我会声称XML中的数字只能使用'。' 作为十进制分隔符,所以“丹麦(丹麦)”下的Excel是错误的 。 逗号(',')作为小数点分隔符永远无效。 我们的模式将value字段设置为“double”,它在https://www.w3.org/TR/xmlschema-2/#double中定义,它表示:
指数和尾数的表示必须遵循整数和小数的词法规则。
https://www.w3.org/TR/xmlschema-2/#decimal说:
十进制有一个由十进制指示符分隔的十进制数字(#x30-#x39)的有限长度序列组成的词法表示。
但是,唉,Excel似乎并不关心这个… :-(或者我误解了一些东西?
我如何将数据导入Excel
我有一个data.xml链接到一个github gist的schema.xsd 。
本质是schema.xsd
有:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> ...snip... <xs:element name="value" type="xs:double"/>
当我像这样在Excel 2016中导入它时:
- 转到数据function区
- 新的查询
- 从其他来源
- 来自networking
- inputurl
- (我第一次在Excel中使用了这个URL,我不得不在这里select最具体的主机,你可能不会)
- select“logging”
现在,如果区域设置的格式为“英语(美国)”,则会看到123.45的值。 如果您的格式为“丹麦语(丹麦)”,您将看到12345的值。:-(
更改区域设置
您可以像这样更改区域设置:
- 设置
- 时间和语言
- (向下滚动)
- 附加date,时间和地区设置
- 更改date,时间或数字格式
- (您现在看到)“区域”设置对话框。
在这里你可以改变“格式:”设置。
在该区域对话框中,还有“附加设置”,在那里我们将“十进制符号”和“数字分组符号”设置为“数字”以及“货币”下的类似设置也没有任何影响。 在Excel的“选项”/“高级”中设置“小数点分隔符”和“千位分隔符”也无关紧要。