代码之家  ›  专栏  ›  技术社区  ›  StevenzNPaul

使用Excel Interop的set_value(xlrangevaluedatatype.xlrangevaluemspersistxml,对象)时出错

  •  2
  • StevenzNPaul  · 技术社区  · 14 年前

    使用Excel Interops设置范围值时出错。 任何帮助/建议都是有价值的。

    这是失败的代码。

    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。

    如果这是Office Interop在将值设置回Excel范围时不支持XLRangeValueMSPersistXML,那么我现在就没有头绪了。

    1 回复  |  直到 13 年前
        1
  •  0
  •   Holistic Developer    13 年前

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