zoukankan      html  css  js  c++  java
  • VSTO学习(二)——Excel对象模型

    要开发Excel的项目,就自然少不了对Excel对象模型的了解了,只有了解Excel对象模型,这样才能更好地对Excel进行处理。下面先给出一张Excel对象模型的图:


    下面就具体对上图中的各个对象做一个简单的介绍:
    Application对象——Excel中的Application对象表示Excel应用程序,该对象是所有Excel对象的根,你可以通过Application对象,获取到其他对象,在外接程序中,我们可以通过下面的方式来获得Application对象:Globals.ThisAddIn.Application

    Workbooks对象代表Workbook对象的集合,而Workbook对象表示Excel中的单个工作簿,我们可以通过下面的方式来获得工作簿对象:Globals.ThisAddIn.Application.ThisWorkbook

    Worksheets对象代表Worksheet对象的集合,而Worksheet代表的就是Excel中的表,下面的代码可以获得Worksheet对象:Globals.ThisAddIn.Application.ThisWorkbook.ActiveSheet (激活的表,每次打开一个Excel文件,都是表一即sheet1被激活,所以通过该代码就说获得表一对象)

    Range对象代表一个范围,是操作Excel文档最常用的对象,它可以表示为一个单元格、一行、一列或多个单元格块(可以连续,也可以不连续)的单元格选定范围,甚至多个工作表中的一组单元格。可能上面的解释过于枯燥,相信大家通过下图可以更好地理解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 + "没有不及格的同学";
    }
    }
    

      

  • 相关阅读:
    古典密码-移位密码|埃特巴什密码Atbash
    古典密码-凯撒密码Caeser
    古典密码-维吉尼亚密码Vigenere
    使用kubeadm搭建一个k8s集群
    用户态线程和内核态线程的区别
    模板合集
    NoteExpress 章节合并后如何更新参考文献列表?
    CSDN 博客园主题
    GShang的博客园2020年终总结
    【比赛记录】CodeChef January Challenge 2021
  • 原文地址:https://www.cnblogs.com/crhdyl/p/5289248.html
Copyright © 2011-2022 走看看