Excel-Plugin手动关闭Excel进程不退出的解决办法

  • 但是在非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);
}

}

猜你喜欢

转载自blog.csdn.net/luohaitao/article/details/127332290
今日推荐