一、常用的一些类
-
Globals.ThisAddIn:
是一个特定于 VSTO 的类,表示当前加载的 Excel 加载项(Add-In)。
ThisAddIn
类是 VSTO 项目中的主类,通常是在
ThisAddIn.cs
文件中定义。它允许你从 Excel 应用程序中访问和控制各种对象和功能。
-
Excel.Worksheet:
是 Microsoft Excel 对象模型中表示工作表的类型。在 VBA(Visual Basic for Applications)或 VSTO(Visual Studio Tools for Office)等开发环境中,用于访问和操作 Excel 应用程序中的各种对象,如工作簿、工作表、单元格等。
-
Excel.XlCalculation:
是 Excel 中用于控制计算选项的枚举类型。在使用 Excel 的开发中(如使用 VBA 或 VSTO),可以通过设置
Excel.Application.Calculation
属性来控制 Excel 在何时进行计算以及如何进行计算。xlCalculationAutomatic: 自动计算;这是 Excel 的默认设置,会在数据发生变化时自动重新计算所有公式。xlCalculationManual: 手动计算。Excel 不会自动计算工作表,只有在调用
Application.Calculate
方法时才会进行计算;xlCalculationSemiautomatic: 半自动计算。Excel 只会在公式、数据或单元格内容发生变化时才会进行计算,而不是像自动计算那样随时计算。
-
Excel.Range:
是 Microsoft Excel 对象模型中表示单元格或区域的类型。在 Excel 的开发环境中(如使用 VBA 或 VSTO),
Excel.Range
是非常重要的一个类,用于操作和管理工作表中的单元格数据和区域。
-
Excel.Application:
是 Microsoft Excel 应用程序的顶级对象,在使用 VBA(Visual Basic for Applications)或 VSTO(Visual Studio Tools for Office)等开发环境中非常重要。它表示正在运行的 Excel 实例,允许开发者通过编程方式控制 Excel 应用程序及其内容。
-
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();
Visual Studio 2013安装过程中出现错误Microsoft Visual Studio 2010 Tools for Office Runtime(x64) Package failed
I、VS2013安装失败
初步解决办法:
1、断网+关闭杀毒软件 -> 控制面板-> VS2013 -> repair
2、repair完毕之后,重启电脑。
3、以管理员...
VSTO(Visual Studio Tools for Office )是VBA(Visual Basic for Application)的替代,使得开发Office应用程序更加简单,并且用VSTO来开发office应用程序可以使用Visual studio开发环境中的众多功能和CLR提供的内存管理,垃圾回收等功能.
1,VSTO的项目类型:
1.1 文档级自定义项目, 会生成一个