- 但是在非ThisAddIn .cs文件当中,比如新建功能区的按钮事件,若想访问Excel元素,则必须在前边加上Globals.ThisAddIn才能够正常访问
- 由于在一般情况下,是根本不会在主程序中去做业务操作的,所以以后所有基本操作的例子,都会按照非主程序的访问方式给出:
比如,你在addin上加了个菜单按钮,在事件里面这么写
button1_Click()
{
using Microsoft.Office.Tools.Ribbon;
using Microsoft.Office.Interop.Excel;
using ExcelTools = Microsoft.Office.Tools;
// worksheet级别的操作:
Worksheet wst = ((Worksheet)Globals.ThisAddIn.Application.ActiveSheet); // 获取当前选中的Sheet页;
Worksheet wst2 = ((Worksheet)Globals.ThisAddIn.Application.Worksheets["考核情况"]); // 根据名称获取Sheet页;
// 新建worksheet
Worksheet new_wst;
new_wst = (Worksheet)Globals.ThisAddIn.Application.Worksheets.Add();
new_wst.Name = "新建Sheet页";
int rowsCount = wst.UsedRange.Rows.Count; //获取已经使用的行
int colsCount = wst.UsedRange.Columns.Count; //获取已经使用的列
var content = wst2.Range["A1"].Value; // 获取表中单元格内容
((Range)wst.Range["A8"]).Value = "111"; // 写入单元格数据
((Range)wst2.Rows[2, Type.Missing]).Delete(XlDeleteShiftDirection.xlShiftToLeft); // 删除某一行
((Range)wst2.Cells[1, 2]).EntireColumn.Delete(0); // 删除某一列
// 取出这个表所有的列
// 如果不用UsedRange的话,就会获取到Excel包含空白的所有列
List all_column = new List();
foreach (Range all_col in wst2.UsedRange.Columns)
{
all_column.Add(all_col.Value2[1, 1]);
}
// 获取当前Excel表的所有表名;
List m_AllSheets = new List();
foreach (var sheetlist in Globals.ThisAddIn.Application.Worksheets)
{
m_AllSheets.Add(((Worksheet)sheetlist).Name);
}
}