使用Excel Interop的set_Value时出错(XLRangeValueDataType.XLRangeValueMSPersistXML,object)

时间:2010-05-25 16:51:43

标签: c# c#-3.0 ms-office com-interop office-interop

在范围上使用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 :(得分:0)

设置值时,您似乎应该不使用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;