Excel:映射的XML数据和;“存储为文本的数字”;错误
我的一位同事有一个XML文档,她使用“获取外部数据/从XML数据导入”在Excel2007中打开该文档 Excel会自动将XML映射到列。但是,某些元素存储数字数据,Excel拒绝将其视为数字:Excel:映射的XML数据和;“存储为文本的数字”;错误,xml,excel,Xml,Excel,我的一位同事有一个XML文档,她使用“获取外部数据/从XML数据导入”在Excel2007中打开该文档 Excel会自动将XML映射到列。但是,某些元素存储数字数据,Excel拒绝将其视为数字: <SOME_NUMBER>68.12</SOME_NUMBER> 68.12 相反,单元格显示“数字存储为文本”错误 目前文档中没有附加XML模式,如果可能的话,我希望避免创建XML模式。还有什么其他选择 注意:尝试不同的区域设置失败。数据似乎总是被视为文本。您只需选择单元格
<SOME_NUMBER>68.12</SOME_NUMBER>
68.12
相反,单元格显示“数字存储为文本”错误
目前文档中没有附加XML模式,如果可能的话,我希望避免创建XML模式。还有什么其他选择
注意:尝试不同的区域设置失败。数据似乎总是被视为文本。您只需选择单元格,右键单击,格式化单元格,将格式类型更改为“数字” 编辑 使用此测试XML文件
<NODES>
<A>
<B>1.23</B>
<C>2.34</C>
<D>3.45</D>
<SOME_NUMBER>ASDF</SOME_NUMBER>
</A>
<A>
<B>1.23</B>
<C>2.34</C>
<D>3.45</D>
<SOME_NUMBER>4.56</SOME_NUMBER>
</A>
<A>
<B>1.23</B>
<C>2.34</C>
<D>3.45</D>
<SOME_NUMBER>4.56</SOME_NUMBER>
</A>
</NODES>
1.23
2.34
3.45
ASDF
1.23
2.34
3.45
4.56
1.23
2.34
3.45
4.56
除后两个数字外,所有列均显示为数字,因为
第一列中的文本
因此,我选择这两个单元格,高亮显示错误框(感叹号),然后选择第二个选项“转换为数字”
“单元格格式”这件事似乎有点愚蠢,因为它不会将格式应用于有错误的单元格,直到您点击该单元格我相信默认情况下,单元格格式适用于整个列,因此在您的示例中,可能会有一些存储文本或数字的实例,但配额为“1.5”因此,默认的文本格式
当我测试XML数据导入时,它会将所有文本列格式化为文本,将数字列格式化为常规我感觉到了您的痛苦,多年来我一直有同样的问题。这是我想出的唯一解决办法
Function ConvertText2Num(RangeToConvert As Range)
RangeToConvert.ClearFormats
RangeToConvert.TextToColumns
End Function
刚看到这个(老)问题,我想我还是可以回答:
当您说“当前没有XML模式附加到文档”时,您并不完全正确。始终存在XML模式,尽管大多数情况下是由Excel隐式创建的。在提取和调整这个模式时——这并不太困难——您可能会得到最简单的结果
关于如何执行此操作的提示(在本例中,问题是日期字段):
我首先想到的是区域设置,因为数字可以存储为68.12或68,12,具体取决于区域,但我知道您已经探讨了手动纠正错误的选择是可能的,但不可行的。;-)该文件相当大,据我所知,您必须为每个单元格分别执行此操作。该文件不能包含数字元素中的字符串,它是由数据库生成的。它也不包含空元素,只包含值0。不知何故,我仍然怀疑整个事件涉及到区域设置/系统区域设置……有趣的是,如果所有(或至少前n个)都包含一个非小数或0,那么Excel会正确地将该列解释为数字。如果包含一个像“68.12”这样的分数值(我在德国,这里写为“68,12”),Excel将开始将其视为字符串,显示错误。至少,将用户语言环境设置为美国英语并没有什么不同-我将尝试更改系统语言环境。事实上,这是不正确的。我刚刚发现Excel没有显示值“0”的错误。但该值显示为左对齐,表示它被视为字符串。这就是解决方案。我最终做了不同的事情,但这是很好的信息。谢谢