2010-08-10 4 views
1

J'utilise une des ressources embed dans mon application C#C# problème de ressources intégré sur Windows XP (NullReferenceException)

string sPath = System.IO.Path.GetTempFileName(); 
System.IO.File.WriteAllBytes(sPath, Properties.Resources.test) 
workbook = app.Workbooks.Open(sPath,missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing); 

Il a bien fonctionné jusqu'à aujourd'hui, il me jette une mauvaise exception:

System.NullReferenceException: référence d'objet non définie à une instance d'un objet à ......

Il est seulement sur 2 Windows XP installations édition proffesional, à la fois racine et les comptes utilisateurs (le compte utilisateur y est très limité, à cause de la politique d'administration). Jusqu'à présent, il a travaillé sur plusieurs installations XP et Vista, sans aucun problème.

Ce qui pourrait être une cause de ce problème?

Merci pour vos idées.

+0

Localisation? Quels sont les paramètres régionaux utilisateur/système sur ces ordinateurs et dans votre application? – Rup

+0

par la localisation de ce que vous voulez dire? – kuba

+0

Ajouter un essai et attraper dans ce bloc de code et imprimer le message d'erreur, je suppose que la référence nulle est à partir du classeur? – ChickSentMeHighE

Répondre

1

I pense que ce serait un problème de référence en raison d'un problème de version comme vous l'avez indiqué. Depuis que vous avez ajouté une référence à la bibliothèque d'objets Microsoft Excel 11.0 (Excel 2003), je ne pense pas que vous pouvez créer une application Microsoft Excel 9.0 (Excel 2000). Je n'ai jamais essayé de traiter avec des versions différentes, mais peut-être que vous pouvez ajouter les deux références et les ouvrir dans un essai et attraper quand on échoue.

code pseudo

try{ 
workbook = app.Workbooks.Open(sPath,missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing); 
} 
catch (NullReferenceException e) 
{ 
     // This means the user is in Excel 9.0 (Excel 2000) 
     // Open workbook as Excel 2000 
} 

Hope this helps