我试图找到一种方法来改变区域设置时打开Excel,或改变整个系统区域设置。我知道这样做是不好的做法,所以我只说明这纯粹是出于自动化测试的原因。我们想要运行我们的Excel插件模拟多个不同的地区设置,以确保它正确处理所有功能(如果有比更改设置更好的方法,请让我知道!)
我知道如何改变线程的CurrentCulture,但这似乎只适用于我们的外接程序,所以我们的外接程序调用的Excel函数与系统区域设置一起运行。
我发现有三种方法我认为可能会使这个工作,但其中一个似乎是一个疯狂的坏主意,另外两个我无法使其工作:
- 真正糟糕的是在打开Excel之前导入一个。reg文件到系统注册表中,但我不喜欢这个想法。
- 另一种方法似乎是使用SetLocaleInfo,从kernel32.dll导入,但对于我的生命,我无法找出使用的参数,或者即使这是我所需要的。
- 最后一种方法是使用微软的AppLocale工具,但是通过不同的语言设置打开它似乎没有达到我预期的效果。实际上,它似乎并没有改变我当前的系统设置!
如果有人能提供任何帮助,我将不胜感激,否则我猜这些只是作为手工测试留下的!
我建议在您的计算机上创建几个用户,并根据您在控制面板->区域和语言中的每个用户的测试目的调整用户区域设置。这基本上允许设置默认语言,以及货币/数字/日期/时间格式。如果这是你想要的,你可以通过runas
命令使用不同的用户执行上下文启动excel,这需要手动输入密码,或者在批处理模式下使用SysInternals中的psexec工具:http://technet.microsoft.com/en-us/sysinternals/bb897553
确保指定加载帐户配置文件的命令行选项。不幸的是,您只能为每个用户调整用户区域设置。系统区域设置是每台计算机定义的。
这里有一个如何从。net调用SetLocaleInfo的完整示例。为了简洁,我就不复制了,它是
http://took1.googlecode.com/svn-history/r87/trunk/Code/App.Dev/SetLocale.cs