2010-10-05 43 views
0

我正在使用interop在C#中打開Excel文件。目前我遇到的問題是,如果我安裝的Excel是英文的,爲了開始工作,我必須將LocalSettings設置爲英文。這兩個不匹配會失敗。Cultureinfo不匹配導致Excel自動化失敗

我發現這是一個已知問題http://support.microsoft.com/kb/320369。但是,我不能總是將線程cultureinfo設置爲英文,因爲我無法控制用戶安裝的Excel版本。看起來唯一的解決方案是找出已安裝的Excel的語言設置,並確保兩個當前線程cultureinfo是相同的。但是,我無法從安裝的Excel中獲得正確的語言設置。

您的幫助表示讚賞。

+0

不要在代碼中修復用戶可以修復的問題。要麼我購買正確版本的Excel或安裝MUI包。這不是你的問題。 – 2010-10-05 19:56:47

回答

0

一個選項可能是檢查註冊表中已安裝的語言包的版本。下面的Technet博客有更多信息,請參閱文章末尾以獲取有關注冊表項的信息。

http://blogs.technet.com/b/office_resource_kit/archive/2010/04/02/how-to-determine-which-2007office-system-languages-are-installed.aspx

從上面的鏈接:

​​ LanguageResources包括以下注冊表項:

  • InstallLanguage表示主編輯語言。
  • 安裝的UI提供機器上所有可用UI語言的列表。
  • UILanguage表示Office中用戶界面的默認顯示語言。
  • EnabledLanguages指示在Office中啓用的語言特定的功能的區域設置標識符(LCID)。

Windows操作系統使用LCID標識Windows註冊表中的語言。有關語言標識符的列表,請參閱2007 Office system中的語言標識符(http://technet.microsoft.com/en-us/library/cc179219.aspx)。

1

無法直接回答您的問題,但我最近已將所有C#Excel編程移至NPOI

這是一個非常好的庫,不需要在服務器上安裝Excel,並生成本機,我在不到一天的時間內就可以加速。

它只適用於Excel 2003文件,並且文檔不是很好。但是,它提供了一整套示例,顯示了許多預期的用例。

考慮到您的問題的性質,以及NPOI對Excel安裝的零需求,NPOI可能不關心EnglishSettings。

新System.Globalization.CultureInfo(
ExcelApp.LanguageSettings.LanguageID(Office.MsoAppLanguageID:

+0

+1,如果這是OP的一個選項,我同意NPOI是要走的路。 – 2010-10-05 19:39:27

1

在檢查註冊表另一種選擇是從Excel的應用程序使用下面的檢索語言。msoLanguageIDUI))

這需要參考Office.dll v14.0