2010-10-05 6 views
0

J'utilise interop pour ouvrir les fichiers Excel en C#. Le problème actuel est que, si l'Excel que j'ai installé est en anglais, pour que l'ouverture fonctionne, je dois configurer LocalSettings en anglais. Il échouera ces deux ne correspondent pas.La non-concordance cultureinfo a fait échouer Excel Automation

J'ai trouvé qu'il s'agit d'un problème connu http://support.microsoft.com/kb/320369. Cependant, je ne pouvais pas toujours définir le thread cultureinfo en anglais, car je n'ai aucun contrôle sur la version Excel installée par l'utilisateur. Il semble que la seule solution est de trouver les paramètres langages de l'Excel installé, et assurez-vous que le threadinfo culture actuel est le même. Cependant, je ne pouvais pas obtenir les paramètres linguistiques appropriés de l'Excel installé.

Votre aide est appréciée.

+0

Ne pas fixer dans le code ce qui peut trivialement être fixé par l'utilisateur. Soit mon achat de la bonne version d'Excel ou l'installation du pack MUI. Ce n'est pas ton problème. –

Répondre

0

Une option peut être de vérifier la version du module linguistique installé dans le registre. Le blog de Technet ci-dessous a plus d'infos, voir la fin de l'article pour plus d'informations sur les clés de registre.

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

À partir du lien ci-dessus:

HKEY_LOCAL_MACHINE\Software\Microsoft\Office\12.0\Common\LanguageResources LanguageResources inclut les clés de Registre suivantes:

  • InstallLanguage Représente la langue d'édition principale.
  • InstalledUIs Fournit une liste de toutes les langues d'interface utilisateur disponibles sur la machine.
  • UILanguage Représente la langue d'affichage par défaut de l'interface utilisateur dans Office.
  • EnabledLanguages ​​ Indique l'identificateur de paramètres régionaux (LCID) pour les fonctionnalités spécifiques à la langue qui sont activées dans Office.

Le système d'exploitation Windows utilise des LCID pour identifier les langues dans le registre Windows. Pour obtenir la liste des identifiants de langue, voir Identificateurs de langue dans Office system 2007 (http://technet.microsoft.com/fr-fr/library/cc179219.aspx).

1

Je ne peux pas répondre à votre question directement, mais j'ai récemment déménagé au NPOI pour toute ma programmation C# Excel.

C'est une très bonne bibliothèque, et ne nécessite pas l'installation d'Excel sur les serveurs, et produit natif je me suis réveillé en moins d'une journée.

Cela fonctionne uniquement avec les fichiers Excel 2003 et la documentation n'est pas excellente. Cependant, il est livré avec un ensemble complet d'exemples qui montrent de nombreux cas d'utilisation attendus. Compte tenu de la nature de votre problème et de l'absence d'exigence de NPOI pour une installation Excel, NPOI peut ne pas se soucier des EnglishSettings.

+0

+1, Si c'est une option pour le PO, je suis d'accord NPOI est la voie à suivre. –

1

Une autre option de vérification du registre récupère la langue de l'application Excel utilisant ce qui suit:

New System.Globalization.CultureInfo (
ExcelApp.LanguageSettings.LanguageID (Office.MsoAppLanguageID.msoLanguageIDUI))

Cela nécessite une référence à Office.dll v14.0

Questions connexes