2010-05-25 4 views
2

Je reçois une erreur lors de l'utilisation d'Excel Interops set_Value sur une plage. Toute aide/suggestion sera utile.Erreur lors de l'utilisation de set_Value d'Excel Interop (XLRangeValueDataType.XLRangeValueMSPersistXML, objet)

C'est le code qui échoue.

using Excel = Microsoft.Office.Interop.Excel; 

Excel.Application xlApp = new Excel.ApplicationClass(); 
Excel.WorkBook WB = xlApp.Workbooks.Add(Type.Missing); 
Excel.WorkSheet WS = WB.Sheets[1] as Excel.WorkSheet; 
object obj = (WS.get_Range("A1:D10") as Excel.Range).get_Value(Excel.XLRangeValueDataType.XLRangeValueMSPersistXML); 

(WS.get_Range("A1:D10") as Excel.Range).set_Value(Excel.XLRangeValueDataType.XLRangeValueMSPersistXML,obj); 

Le code échoue ici. Je mets la même valeur d'objet que je reçois de la gamme excel. L'exception affichée est System.NotImplementedException.

Je ne sais pas à ce stade si c'est le bureau interop ne supporte pas XLRangeValueMSPersistXML tout en redéfinissant la valeur à la gamme Excel.

Répondre

0

Lors de la définition de la valeur, il semble que vous deviez désactiver le paramètre RangeValueDataType. Le code suivant ne provoque pas l'exception NotImplementedException. (Il corrige aussi quelques problèmes de cas qui empêchent votre échantillon d'origine de la compilation, ainsi que le nettoyage il un peu.)

using Excel = Microsoft.Office.Interop.Excel; 
Excel.Application xlApp = new Excel.ApplicationClass(); 
Excel.Workbook WB = xlApp.Workbooks.Add(Type.Missing); 
Excel.Worksheet WS = WB.Sheets[1] as Excel.Worksheet; 
Excel.Range r = WS.Range["A1:D10"]; 
var obj = r.Value[Excel.XlRangeValueDataType.xlRangeValueMSPersistXML]; 
r.Value = obj; 
+0

Quelle est la version de bureau avez-vous essayé cela avec ?, ma version était 2003. – StevenzNPaul

Questions connexes