gpt4 book ai didi

C# 加载项 Excel : ActiveSheet

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

对于我的第一个 AddIn Excel,我想选择事件工作表并计算工作表中的列和行。

我在自定义功能区中创建了一个按钮。

    private void AddValues_Click(object sender, RibbonControlEventArgs e)
{
int lastRow;
int lastColonne;

lastRow = Globals.VATTools.Application.Selection.Rows.Count;
lastColonne = Globals.VATTools.Application.Selection.Columns.Count;

System.Windows.Forms.MessageBox.Show("Row : " + lastRow + " " + "Columns : " + lastColonne);

Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
xlApp.Visible = true;
Microsoft.Office.Interop.Excel.Workbook xlWb = xlApp.ActiveWorkbook as Microsoft.Office.Interop.Excel.Workbook;
Microsoft.Office.Interop.Excel.Worksheet xlSheet = xlWb.ActiveSheet;
Microsoft.Office.Interop.Excel.Range range = xlSheet.get_Range("A19");
range.Value = "hello world!";
}

我的第一个问题:它返回 1 列和 1 行。但在我的工作表中,我有 23 列和 17 行。为什么这不会在我的工作表中返回正确的列数和行数?

第二个问题:我在 ActiveSheet 上有一个异常:

Microsoft.Office.Interop.Excel.Worksheet xlSheet = xlWb.ActiveSheet;

错误:System.NullReferenceException:“对象引用未设置到对象的实例。”

我不明白为什么会出现此错误。

谢谢!

最佳答案

第一个问题:

您需要使用工作表对象中的 UsedRange 属性。选择只会为您提供有关所选单元格的当前部分的信息。

Microsoft.Office.Interop.Excel.Range usedRange = xlSheet.UsedRange;
//To get the number of rows/columns
int totalRows = usedRange.Rows.Count;
int totalColumns = usedRange.Columns.Count;

第二个问题:

由于您正在编写插件,因此无需创建新的 excelApp。以下代码将使您能够访问您的文档

Microsoft.Office.Interop.Excel.Workbook xlWb = Globals.ThisAddin.Application.ActiveDocument.Workbook;

关于C# 加载项 Excel : ActiveSheet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43395375/

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