Ошибка при использовании set_Value Excel Interop (XLRangeValueDataType.XLRangeValueMSPersistXML, объект) - PullRequest
2 голосов
/ 25 мая 2010

Я получаю ошибку при использовании Excel Interops set_Value для диапазона. Любая помощь / предложение будет ценным.

Это код, который не работает.

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);

Код не работает здесь. Я устанавливаю то же значение объекта, которое получаю из диапазона Excel. Показано исключение System.NotImplementedException.

На данный момент я ничего не понимаю, если это офисное взаимодействие не поддерживает XLRangeValueMSPersistXML при установке значения обратно в диапазон Excel.

1 Ответ

0 голосов
/ 12 января 2012

При установке значения кажется, что вы должны оставить настройку RangeValueDataType. Следующий код не вызывает исключение NotImplementedException. (Это также исправляет некоторые проблемы с кейсом, которые мешают скомпилировать исходный образец, а также немного приводит в порядок.)

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;
...