C#将内容添加到Excel工作表

如何使用C#将值添加到活动工作簿的Excel单元格? 我是VSTO C#新手,无法find适合我的解决scheme。

这是我的代码(从这个问题写入单元格在Excel中使用C# ):

 using Excel = Microsoft.Office.Interop.Excel; namespace ExcelSDRAddIn { public partial class UserControlSDR : UserControl { public UserControlSDR() { InitializeComponent(); } private void btnTemplate_Click(object sender, EventArgs e) { Excel.Worksheet ws = (Excel.Worksheet)(sender as Workbook).ActiveSheet; ws.Cells[1, 1] = "Value"; } } } 

运行后,我在这一行上得到以下exceptionExcel.Worksheet ws = (Excel.Worksheet)(sender as Workbook).ActiveSheet;

在ExcelSDRAddIn.dll中发生types“System.NullReferenceException”的exception,但未在用户代码中处理

附加信息:对象引用未设置为对象的实例。

也试过这个:

  dynamic excelType = Type.GetTypeFromProgID("Excel.Application"); excelType.Visible = true; excelType.Workbooks.Add(); dynamic workSheet = excelType.ActiveSheet; workSheet.Cells[1, 1] = "Names"; workSheet.Cells[1, 2] = "Age"; 

并返回:

在System.Core.dll中发生types“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”的exception,但未在用户代码中处理

附加信息:“System.Reflection.TypeInfo”不包含“可见”

另一个失败的例子是:

 Microsoft.Office.Interop.Excel.Application oXL; Microsoft.Office.Interop.Excel._Workbook oWB; Microsoft.Office.Interop.Excel._Worksheet oSheet; ... var Excel = new Excel.Application(); oXL = new Microsoft.Office.Interop.Excel.Application(); oWB = oXL.ActiveWorkbook; oSheet = oWB.ActiveSheet; oSheet.Cells[1, 1] = "Value"; 

要在您的scheme中访问工作簿,请使用:

  Globals.ThisAddIn.Application.Workbooks... 

MSDN参考: 编程VSTO加载项

以下代码示例演示如何使用应用程序字段在Microsoft Office Excel的VSTO加载项中创build新的工作簿。 此示例旨在从ThisAddIn类运行。

  Excel.Workbook newWorkbook = this.Application.Workbooks.Add(System.Type.Missing); 

要从ThisAddIn类外部做同样的事情,请使用Globals对象来访问ThisAddIn类。 有关Globals对象的更多信息,请参阅Office项目中对象的全局访问。

  Excel.Workbook newWorkbook = Globals.ThisAddIn.Application.Workbooks.Add(System.Type.Missing); 

编辑:您需要使用此代码来获取活动工作表

  Excel.Worksheet ws = (Excel.Worksheet)Globals.ThisAddin.Application.ActiveSheet; 

从你的方法名称btnTemplate_Click我打赌你正在使用button来调用这个function。 所以在这种情况下发件人是button,而不是Workbook 。 当您尝试将发件人作为Workbook取消发布时,您将获得null,并且在尝试访问ActiveSheet属性时收到NullReferenceException

请再次阅读链接参考中的问题。 它指出:

I created a visual studio excel workbook project which contains ThisWorkbook class

我不知道这个类是怎么样的,但我认为这是方法private void ThisWorkbook_Startup(object sender, System.EventArgs e)应该被挂钩到某种`Startup事件。