VSTO(Visual Studio Tools for Office)开发笔记

一、常用的一些类

  1. Globals.ThisAddIn: 是一个特定于 VSTO 的类,表示当前加载的 Excel 加载项(Add-In)。ThisAddIn 类是 VSTO 项目中的主类,通常是在 ThisAddIn.cs 文件中定义。它允许你从 Excel 应用程序中访问和控制各种对象和功能。

  2. Excel.Worksheet:是 Microsoft Excel 对象模型中表示工作表的类型。在 VBA(Visual Basic for Applications)或 VSTO(Visual Studio Tools for Office)等开发环境中,用于访问和操作 Excel 应用程序中的各种对象,如工作簿、工作表、单元格等。

  3. Excel.XlCalculation:是 Excel 中用于控制计算选项的枚举类型。在使用 Excel 的开发中(如使用 VBA 或 VSTO),可以通过设置 Excel.Application.Calculation 属性来控制 Excel 在何时进行计算以及如何进行计算。xlCalculationAutomatic: 自动计算;这是 Excel 的默认设置,会在数据发生变化时自动重新计算所有公式。xlCalculationManual: 手动计算。Excel 不会自动计算工作表,只有在调用 Application.Calculate 方法时才会进行计算;xlCalculationSemiautomatic: 半自动计算。Excel 只会在公式、数据或单元格内容发生变化时才会进行计算,而不是像自动计算那样随时计算。

  4. Excel.Range:是 Microsoft Excel 对象模型中表示单元格或区域的类型。在 Excel 的开发环境中(如使用 VBA 或 VSTO),Excel.Range 是非常重要的一个类,用于操作和管理工作表中的单元格数据和区域。

  5. Excel.Application:是 Microsoft Excel 应用程序的顶级对象,在使用 VBA(Visual Basic for Applications)或 VSTO(Visual Studio Tools for Office)等开发环境中非常重要。它表示正在运行的 Excel 实例,允许开发者通过编程方式控制 Excel 应用程序及其内容。

  6. Excel.XIFileFormat:是 Microsoft Excel 中用于表示不同文件格式的枚举类型。在使用 VBA(Visual Basic for Applications)或 VSTO(Visual Studio Tools for Office)等开发环境中,可以通过指定 Excel.XlFileFormat 来保存 Excel 工作簿时的文件格式选项。

二、常用类的使用方法和属性 

//获取当前加载的Excel加载项(Add-In)中正在运行的Excel实例,Appliaction对象
Excel.Application myEXAP = Globals.ThisAddIn.Application;
//用于获取当前处于活动状态(即当前正在显示在用户界面中)的工作表对象(Worksheet)
//在Excel中,只有一个工作表可以是活动的。
//也可以指定要获取的活动工作表
Excel.Worksheet wst = Globals.ThisAddIn.Application.ActiveSheet;
Excel.Worksheet wst = Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets.Item["示例Sheet"];
/*从当前活动窗口(即用户当前正在编辑的 Excel 窗口)获取选定的单元格区域的方式
Application对象的一个属性,它返回当前活动的窗口(即用户当前正在交互的 Excel 窗口)
RangeSelection于获取用户当前选定的单元格区域。如果用户在 Excel 中选择了一个单元格区域(例如,拖动鼠标选择了一些单元格),则 RangeSelection 属性将返回一个 Excel.Range 对象,该对象表示所选区域的范围*/
Excel.Range myRange = Globals.ThisAddIn.Application.ActiveWindow.RangeSelection;
/*获取当前活动的工作表中指定单元格的数据*/
Excel.Worksheet wst = Globals.ThisAddIn.Application.ActiveSheet;
var rul = wst.Range["A2"].Value;
/*获取指定行范围内单元格对象Range*/
Excel.Worksheet my_Sht = Globals.ThisAddIn.Application.ActiveSheet;
Excel.Range myRange = my_Sht .Rows["3:40"];

/*获取指定行范围内单元格对象Range,复制这个指定的范围进行复制粘贴*/
Excel.Worksheet my_Sht = Globals.ThisAddIn.Application.ActiveSheet;
Excel.Range myRange = my_Sht .Rows["3:40"];
myRange.Copy();
myRange.Insert(Excel.XlInsertShiftDirection.xlShiftDown);

/*
另一种特殊粘贴方式
Excel.XlPasteType.xlPasteAll:表示粘贴所有内容(包括格式和值)

Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone: 粘贴操作的特殊选项,xlPasteSpecialOperationNone 表示没有特殊操作,可以设置其他操作这里就不一一举例了自己搜一下。

false, false: 这两个参数分别表示是否转置(Transpose)和是否进行链接(Link),在这里都设置为 false,表示不进行转置和链接。
*/
my_Sht .Range["A:C"].PasteSpecial(Excel.XlPasteType.xlPasteAll, Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, false, false);
/*给指定单元格赋值*/
Excel.Worksheet my_Sht = Globals.ThisAddIn.Application.ActiveSheet;
my_Sht.Range[$"B1"].Value = "参数1";

//给指定范围内的单元格赋值
my_Sht.Range[$"B2:B3"].Value = $"参数2";
/*查找指定列范围中"参数1"的数据所在的单元格行数*/
Excel.Worksheet my_Sht = Globals.ThisAddIn.Application.ActiveSheet;
int start_row = my_Sht.Range["B:B"].Find($"参数1").Row;
/*查找指列的起始位置和结束位置的行数,然后整个删除这个行范围*/
Excel.Worksheet my_Sht = Globals.ThisAddIn.Application.ActiveSheet;
int start_row = my_Sht.Range["C:C"].Find("开始参数").Row;
int end_row = my_Sht.Range["C:C"].Find("结束参数").Row;
int Delete_Range= my_Sht.Rows[$"{start_row }:{end_row}"];
Delete_Range.Delete();
/*给单元格添加数据验证规则以及规则内容;清除或更改单元格中的数据验证规则*/
Excel.Worksheet my_Sht = Globals.ThisAddIn.Application.ActiveSheet;

my_Sht.Range["D1"].Validation.Add(Excel.XlDVType.xlValidateList, Type.Missing, Excel.XlFormatConditionOperator.xlBetween, "Select1","Select2","Select3");

my_Sht.Range["D1"].Validation.Delete();
/*给单元格写入公式*/
Excel.Worksheet my_Sht = Globals.ThisAddIn.Application.ActiveSheet;
my_Sht.Range["D4"].Formula = "=D1";
my_Sht.Range["D5"].Formula = "=SUM(D1:D2)";
/*2表示行号,"D" 表示列号,Cells[2, "D"] 表示工作表中的第二行第四列的单元格(即 D2 单元格),设置单元格的值为123*/
Excel.Worksheet my_Sht = Globals.ThisAddIn.Application.ActiveSheet;
my_Sht.Cells[2, "D"].Value = "123";
// 将单元格背景色填充为红色,当然也可以填充其他颜色
Excel.Worksheet my_Sht = Globals.ThisAddIn.Application.ActiveSheet;
Excel.Range cell = my_Sht.Cells[1, "D"];
cell.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
//提供用户自由框选单元格范围
var selectRange = Globals.ThisAddIn.Application.InputBox("请选择列单元", "输入算例选择", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 8);

//点击取消
if (selectRange.GetType().ToString() == "System.Boolean")
{
   return;
}

List<int> rul_column = new List<int>();
//选择范围后点击确定 使用foreach循环Range对象
foreach (Excel.Range r in range_input)
{
   int column_number = r.Column;//列
   object rul = ExcelApp.ActiveSheet.Cells[1, column_number].Value;指定列的值
   
   //可以去除没必要的空值
   if (rul== null || rul.ToString() == "")
   {
        continue;
   }
   rul_column .Add(r.Column);
}
//清除指定单元格或者范围单元格中的批注信息
Excel.Worksheet my_Sht = Globals.ThisAddIn.Application.ActiveSheet;
my_Sht.Range[$"D4"].ClearComments();
my_Sht.Range[$"D1:D3"].ClearComments();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值