gpt4 book ai didi

C# vsto 添加工作表

转载 作者:太空宇宙 更新时间:2023-11-03 14:51:59 26 4
gpt4 key购买 nike

我的所有代码都有效,但是当我写入新工作表中的单元格时,写入第一个 Sheet1。在单击事件结束之前不会创建工作表。

我可以在点击事件后触发另一个事件来填充创建的新工作表吗?

我该如何解决这个问题?谢谢...

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 定义范围,您在创建新工作表之前将其定义为事件工作表。仅仅因为您选择了 xlWorkSheet 并不意味着 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";

关于C# vsto 添加工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51405991/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com