• 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 + "没有不及格的同学";
    }
    }
    

      

  • 相关阅读:
    忘记线上MySQL密码:
    Auth认证
    swoole定时
    hashMap,hashTable,concurrentHashmap的区别
    JSP中URL路径获取问题
    #Spring代理的简单例子#
    #动态代理#
    #类加载机制#
    #算法#二分查找和插入(start end交叉的地方)
    #tomcat#生成的jsp转换问题
  • 原文地址:https://www.cnblogs.com/crhdyl/p/5289248.html
Copyright © 2020-2023  润新知