C#vsto添加工作表
我所有的代码都可以工作,但当我写入新工作表中的单元格时,会写入第一张工作表1。在单击事件结束之前,不会创建图纸 单击事件之后是否还有其他事件可以触发以填充创建的新图纸 我怎样才能解决这个问题?谢谢C#vsto添加工作表,c#,excel,vsto,C#,Excel,Vsto,我所有的代码都可以工作,但当我写入新工作表中的单元格时,会写入第一张工作表1。在单击事件结束之前,不会创建图纸 单击事件之后是否还有其他事件可以触发以填充创建的新图纸 我怎样才能解决这个问题?谢谢 using Microsoft.Office.Interop.Excel; using System.Runtime.InteropServices; using Microsoft.Office.Tools.Ribbon; using Excel = Microsoft.Office.Interop
using Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
using Microsoft.Office.Tools.Ribbon;
using Excel = Microsoft.Office.Interop.Excel;
namespace Prototype
{
public partial class Ribbon1
{
private Excel.Application xlApp;
private Workbook xlWorkBook;
private Worksheet xlWorkSheet;
private dynamic excelSheet;
private Range range;
private void Ribbon1_Load(object sender, RibbonUIEventArgs e) { }
private void Button1_Click(object sender, RibbonControlEventArgs e)
{
xlApp = (Excel.Application)Marshal.GetActiveObject("Excel.Application");
xlApp.Visible = true;
xlWorkBook = xlApp.ActiveWorkbook;
xlWorkSheet = xlWorkBook.Worksheets.Item[1];
excelSheet = xlWorkBook.ActiveSheet;
xlApp = (Excel.Application)Marshal.GetActiveObject("Excel.Application");
xlWorkBook = xlApp.ActiveWorkbook;
xlWorkBook.Sheets.Add(After: xlWorkBook.Sheets[xlWorkBook.Sheets.Count]);
xlWorkSheet = xlWorkBook.Worksheets.Item[2];
xlWorkSheet.Select();
xlWorkSheet.Name = "Dashboard";
xlWorkBook.Sheets.Add(After: xlWorkBook.Sheets[xlWorkBook.Sheets.Count]);
xlWorkSheet = xlWorkBook.Worksheets.Item[3];
xlWorkSheet.Select();
xlWorkSheet.Name = "Dashboard2";
xlWorkBook.Worksheets.Add(After: xlWorkBook.Sheets[xlWorkBook.Sheets.Count]);
xlWorkSheet = xlWorkBook.Worksheets.Item[4];
xlWorkSheet.Select();
xlWorkSheet.Name = "Dashboard3";
xlWorkSheet = (Worksheet)xlWorkBook.Worksheets["Dashboard"];
xlWorkSheet.Select();
range = excelSheet.Cells[1, 1];
range.Value2 = "Test";
xlWorkSheet = (Worksheet)xlWorkBook.Worksheets["Dashboard2"];
xlWorkSheet.Select();
range = excelSheet.Cells[1, 1];
range.Value2 = "Test";
}
}
}
您正在根据创建新工作表之前定义为活动工作表的
excelSheet
定义范围。选择xlsheet
并不意味着excelSheet
更改了值。你的代码应该是
xlWorkSheet = (Worksheet)xlWorkBook.Worksheets["Dashboard"];
range = xlWorkSheet.Cells[1, 1];
range.Value2 = "Test";
xlWorkSheet = (Worksheet)xlWorkBook.Worksheets["Dashboard2"];
range = xlWorkSheet.Cells[1, 1];
range.Value2 = "Test";
另外,如果您为每个工作表定义不同的变量,而不是重用变量,则会更好。这样代码看起来就更干净了