在不同的区域设置/更改系统区域设置中运行Excel

时间:2014-03-11 15:33:24

标签: c# excel system locale add-in

我试图在打开Excel或更改整个系统区域设置时找到更改区域设置的方法。 我知道这样做是不好的做法,所以我只是注意到这纯粹是出于自动化测试的原因。我们希望运行我们的Excel加载项,模拟多个不同的区域设置,以确保它正确处理所有功能(如果有更好的方法,请更改设置,请告诉我们!)

我知道如何更改线程的CurrentCulture,但这似乎只适用于我们的加载项,因此我们的加载项调用的Excel函数运行时使用系统区域设置。

我发现有三种方式可以让我觉得这样有效,但其中一种似乎是一个非常糟糕的主意,另外两种我无法设法工作:

  • 真正糟糕的是在打开Excel之前将.reg文件导入系统注册表,但我不喜欢这个想法。
  • 另一种方式似乎是使用从kernel32.dll导入的SetLocaleInfo,但就我而言,我无法弄清楚要使用的参数,或者即使这是我需要的。
  • 最后一种方法是使用Microsofts AppLocale工具,但通过不同的语言设置打开它并没有达到我的预期。实际上,从我目前的系统设置来看,它似乎没有任何改变!

如果有人可以提供任何帮助,我们将不胜感激,否则我想这些只是作为手动测试而留下的!

2 个答案:

答案 0 :(得分:0)

我建议您在计算机上创建多个用户,并根据控制面板中每个用户的测试目的调整用户区域设置 - >地区和语言。这基本上允许设置默认语言和货币/数字/日期/时间格式。如果这是您想要的,您可以使用runas命令启动excel,这需要输入手动密码,或者使用SysInternals中的psexec工具以批处理模式启动:http://technet.microsoft.com/en-us/sysinternals/bb897553

确保指定加载帐户个人资料的命令行选项。不过,您只能调整每个用户的用户区域设置。系统区域设置是按计算机定义的。

答案 1 :(得分:-1)

这里有一个如何从.Net调用SetLocaleInfo的完整示例。为了简洁起见,我不会在这里复制,它是

http://took1.googlecode.com/svn-history/r87/trunk/Code/App.Dev/SetLocale.cs