已添加对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))。
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))。
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]
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