已添加对Microsoft Office 14.0 Object Library的引用。                Microsoft.Office.Interop.Excel.Worksheet ws = new Microsoft.Office.Interop.Excel.Worksheet();
                ws.Cells["A", "1"] = "1+1";
                MessageBox.Show(ws.Evaluate("A1").ToString());执行报错:
无法将类型为“Microsoft.Office.Interop.Excel.WorksheetClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Worksheet”。此操作失败的原因是对 IID 为“{000208D8-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 被调用的对象已与其客户端断开连接。 (异常来自 HRESULT:0x80010108 (RPC_E_DISCONNECTED))。

解决方案 »

  1.   

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Excel = Microsoft.Office.Interop.Excel;namespace ExcelEvalTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                var app = new Excel.Application();
                Excel.Workbook workbook = app.Workbooks.Add();
                Excel.Worksheet worksheet = workbook.Worksheets.Add();
                var result = worksheet.Evaluate("A1");            app.Quit();
            }
        }
    }不是 new Worksheet 而是 workbook.Worksheets.Add(); 或者直接用 workbook.Worksheets[1] 
      

  2.   


    static void Main(string[] args) {
        Excel.Application app = new Excel.Application();    Excel._Workbook result = app.Workbooks.Add();
        Excel._Workbook wb1 = app.Workbooks.Open(Path.GetFullPath("./Sources/Source1.xlsx"));
        Excel._Workbook wb2 = app.Workbooks.Open(Path.GetFullPath("./Sources/Source2.xlsx"));    foreach (Excel._Worksheet each in wb1.Sheets) {
            each.Copy(result.Worksheets[1]);
        }    foreach (Excel._Worksheet each in wb2.Sheets) {
            each.Copy(result.Worksheets[1]);
        }    result.SaveAs(@"c:\result.xlsx");    Console.WriteLine("press any key to exit.");
        Console.ReadLine();    wb1.Close();
        wb2.Close();
        app.Quit();
    }或者Open
    不带new