如何将值添加到使用C#的活动工作簿的Excel单元?我是新来VSTO C#
,不能找到适合我的解决方案...C#将内容添加到Excel工作表
这是我的代码(从这个问题Write to cell in excel using 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";
}
}
}
运行它,我得到下面的异常后在这条线Excel.Worksheet ws = (Excel.Worksheet)(sender as Workbook).ActiveSheet;
:
型“System.NullReferenceException”的异常出现在ExcelSDRAddIn.dll但在用户代码中没有处理
附加信息:未将对象引用设置为对象的实例。
也试图与此:
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";
,并返回:
型 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' 的异常出现在System.Core.dll但没有在用户代码中处理
附加信息:'System.Reflection.TypeInfo'不包含'Visible'的定义
失败又如:
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";
什么是发送者的到来在为运行时类型?从您发布的内容看来,发件人似乎不是工作簿类型,因此当您尝试将其转换为工作簿或发件人为空时,其值为空。 – Jinish
此外,你可能要检查的一篇文章,我写与Office交互,而无需使用互操作:https://jinishbhardwaj.wordpress.com/2016/06/21/com-interop-without-referencing-com-assemblies-using-dynamic -c/ – Jinish
我检查了文章,并添加代码,但仍然无法正常工作......看到更新的问题 – Valip