zoukankan      html  css  js  c++  java
  • VSTO学习(三)——创建Excel解决方案

    四、创建Excel外接程序
    介绍完了Excel对象模型之后,我们就可以利用这些对象来对Excel文档进行操作了,下面就创建一个简单的Excel外接程序的。
    首先我们模拟一个需求,大多说软件在使用时都会弹出一个欢迎界面,这样我们就创建一个外接程序,每次打开Excel文件时弹出一个欢迎界面,退出时弹出“谢谢使用”界面。
    我们只需要在上面的创建工程中介入下面的代码即可:

    复制内容到剪贴板
    代码:
    using System.Windows.Forms;

    namespace MyExcelAddIn1
    {
    public partial class ThisAddIn
    {
    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
    // 因为欢迎使用窗口要在打开Excel的时候弹出,所以把下面代码放在Startup方法内
    MessageBox.Show("欢迎使用Microsoft Excel");
    }

    private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
    {
    // 在退出Excel的时候弹出谢谢使用窗口,所以把下面的代码放在Shutdown方法内
    MessageBox.Show("谢谢使用!");
    }

    #region VSTO generated code

    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InternalStartup()
    {
    this.Startup += new System.EventHandler(ThisAddIn_Startup);
    this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
    }

    #endregion
    }
    }

    这样,我们就完成了上面简单的一个模拟需求了,下面让我们按F5来测试下效果吧!
    按F5运行该程序时,首先打开一个Excel之后,一个欢迎界面就会弹出:

    点击Excel窗口上的"X"按钮时,就会弹出一个 “谢谢使用!”的窗口,效果如下:

    点击 Ok 按钮之后才会正常退出Excel。这样就完成了一个简单的Excel外接程序了,上面提到过外接程序是应用程序级别的,所以当你每次打开Excel的时候都会有这样的一个欢迎界面和关闭Excel时都有一个"谢谢使用"窗口,有些朋友想问了,如果我想卸载这个插件怎么办呢?方法很简单,只需要右键你的解决方案——>清理,这样可以了,另外你也可以从开发工具选项卡——>COM 插件,在弹出的窗口中选择你自定义的插件 再按下移除按钮。具体步骤见下图:

    五、创建Excel文档级自定义项
    介绍完了创建Excel外接程序之后,下面看看如何创建一个文档级的项目:
    1. 新建一个Excel 2010 Workbook(即Excel工作簿)项目:

    2. 单击 OK按钮,在下面的窗口中单击 ”OK“按钮:

    3. 在第一创建Excel工作簿项目是会弹出下面的一个窗口(窗口意思为:是否允许创建的项目访问VBA项目系统),此时我们只需要点击“Ok”就完成了Excel工作簿项目的创建。

    现在我们来模拟一个需求,比如现在有一个成绩单工作表,我们希望获得各科目不及格同学的名字。此时我们只需要在上面创建的工作簿项目中添加一个ComboBox,一个Button,一个textbox。在button的Click事件中添加下面的代码:

    复制内容到剪贴板
    代码:
    // 找出各科目不及格同学的名字
    private void btnSearch_Click(object sender, EventArgs e)
    {
    // 清除textbox中的内容
    txtResult.Clear();

    // 从复选框中获得选择的科目索引
    int subjectIndex = cbxsubjects.SelectedIndex; 
    if (subjectIndex == -1)
    {
    MessageBox.Show("请先选择一个科目");
    return;
    }

    // 获得选择的科目名称
    string subjectName = cbxsubjects.SelectedItem.ToString();
    // 获得工作表对象
    Excel.Worksheet worksheet =(Excel.Worksheet)Globals.ThisWorkbook.ActiveSheet;

    for (int row = 2; row < worksheet.UsedRange.Rows.Count+1; row++)

    Excel.Range rng =(Excel.Range)worksheet.Cells[row,subjectIndex + 2];
    Excel.Range rng1 = (Excel.Range)worksheet.Cells[row, 1];
    if (rng.Value< 60)
    {
    txtResult.Text += rng1.Value + "; ";
    }
    }
    if (txtResult.Text.Length == 0)
    {
    txtResult.Text = subjectName + "没有不及格的同学";
    }
    }

    运行该项目结果为:

  • 相关阅读:
    c# 在WebBrowser中用SendMessage模拟鼠标点击
    R 脚本读取汇总 Excel 表格数据
    lsyncd —— 多机器实时同步文件神器
    gops —— Go 程序诊断分析工具
    【读书】《跟任何人都聊得来》
    Monkeyrunner自动化测试由浅入深(第一节)
    【读书】《优秀到不能被忽视》
    【管理提升】360管理沟通的学习收获总结
    【读书】《不懂说话你怎么带团队》
    软件测试行业现状 2018年度报告
  • 原文地址:https://www.cnblogs.com/crhdyl/p/5289307.html
Copyright © 2011-2022 走看看