2

範囲でExcelInteropsset_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です。

値をExcelの範囲に戻すときに、オフィスの相互運用機能がXLRangeValueMSPersistXMLをサポートしていない場合は、現時点ではわかりません。

4

1 に答える 1

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;
于 2012-01-12T19:32:59.943 に答える