zoukankan      html  css  js  c++  java
  • Excel 二次开发系列(2): Excel 常用操作(创建、打开、读取、写入)

    一、再次说明:

    前面说到了,Excel 的编程模型,在此模型中,我们最注重的几个对象是:

    ·         Application

    ·         Workbook

    ·         Worksheet

    ·         Range

    为更好地理解对象模型,在这里重新引用 微软的标准文档说明(上次是以一篇博客为例):

    ·         Application 对象

    Excel Application 对象表示 Excel 应用程序本身。Application 对象公开了大量有关正在运行的应用程序、应用于该实例的选项以及在该实例中打开的当前用户的对象的信息。

    说明:

    不应将 Excel Application 对象的 EnableEvents 属性设置为 false。将此属性设置为 false 将阻止 Excel 引发任何事件,包括宿主控件的事件。

    ·         Workbook 对象

    Microsoft.Office.Interop.Excel..::.Workbook 类表示 Excel 应用程序内的单个工作簿。

    通过提供 Microsoft.Office.Tools.Excel..::.Workbook 类(使用该类可以访问 Workbooks 集合的所有成员)以及数据绑定功能和附加事件,Visual Studio Tools for Office 扩展了 Microsoft.Office.Interop.Excel..::.Workbook 类。

    ·         Worksheet 对象

    Microsoft.Office.Interop.Excel..::.Worksheet 对象是 Worksheets 集合的成员。Microsoft.Office.Interop.Excel..::.Worksheet 的许多属性、方法和事件与 Application Microsoft.Office.Interop.Excel..::.Workbook 类提供的成员完全相同或相似。

    Excel 提供 Sheets 集合作为 Microsoft.Office.Interop.Excel..::.Workbook 对象的属性,但是 Excel 中没有 Sheet 类。相反,Sheets 集合中的每个成员都是 Microsoft.Office.Interop.Excel..::.Worksheet Microsoft.Office.Interop.Excel..::.Chart 对象。

    对于文档级自定义项,Visual Studio Tools for Office 会在新的项目中提供一个 Microsoft.Office.Tools.Excel..::.Worksheet 宿主项,并创建三个实例:Sheet1Sheet2 Sheet3。对其中任何工作表的访问都可以通过 Globals 引用进行。Visual Studio Tools for Office 通过提供 Microsoft.Office.Tools.Excel..::.Worksheet 宿主项来扩展 Microsoft.Office.Interop.Excel..::.Worksheet 对象。

    ·         Range 对象

    Microsoft.Office.Interop.Excel..::.Range 对象是 Excel 应用程序中最常用的对象。在能够处理 Excel 内的任何范围之前,必须将它表示为 Range 对象,并处理该对象的方法和属性。Range 对象表示一个单元格、一行、一列、包含一个或多个单元格块(可以连续,也可以不连续)的单元格选定范围,甚至多个工作表中的一组单元格。

    二、一般操作方法:

    利用上面的对象就好操作 Excel了:

    //首先注意命名空间:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Xml.Linq;
    using Excel = Microsoft.Office.Interop.Excel;
    using Office = Microsoft.Office.Core;
    using Microsoft.Office.Interop.Excel;
    using System.Reflection;

              
    //创建Application对象             
                Excel.Application xApp = new Excel.ApplicationClass();
                xApp.Visible 
    = true;
                
    //得到WorkBook对象, 下面的是打开已有的文件 
                Excel.Workbook xBook = xApp.Workbooks._Open(@"D:\Tomin.xls",
                Missing.Value, Missing.Value, Missing.Value, Missing.Value
                , Missing.Value, Missing.Value, Missing.Value, Missing.Value
                , Missing.Value, Missing.Value, Missing.Value, Missing.Value);
               

                
    //指定要操作的Sheet,两种方式: 
                Excel.Worksheet xSheet = (Excel.Worksheet)xBook.Sheets[1];
                
    //Excel.Worksheet xSheet=(Excel.Worksheet)xApp.ActiveSheet; 

                
    //读取数据,通过Range对象 
                Excel.Range rng1 = xSheet.get_Range("A1", Type.Missing);// Type.Missing 也可以用 Missing.Value
                Console.WriteLine(rng1.Value2);

                
    //读取,通过Range对象,但使用不同的接口得到Range 
                Excel.Range rng2 = (Excel.Range)xSheet.Cells[31];
                Console.WriteLine(rng2.Value2);

                
    //写入数据 
                Excel.Range rng3 = xSheet.get_Range("C6", Missing.Value);
                rng3.Value2 
    = "Hello";
                rng3.Interior.ColorIndex 
    = 6//设置Range的背景色 

                
    //保存方式一:保存WorkBook 
                xBook.SaveAs(@"D:\Tomin.xls",
                Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value,
                Missing.Value, Missing.Value);

                
    //保存方式二:保存WorkSheet 
                xSheet.SaveAs(@"D:\Tomin.xls",
                Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);


                
    //保存方式三 
                xBook.Save();
                
    // 保存方式四
                xBook.Close(true@"D:\Tomin.xls", Missing.Value);    

                xSheet 
    = null;
                xBook 
    = null;
                xApp.Quit(); 
    //这一句是非常重要的,否则Excel对象不能从内存中退出 
                xApp = null;


    以上是一些常用的Excel 操作方法,有了这些方法,就可以很好的去进行Excel的开发了,下班了,要回家了,
    下一节我将会和大家一起分享:Excel 二次开发系列(3): 创建Excel二次开发环境    下周见

  • 相关阅读:
    c++继承中的内存布局
    函数调用的原理4点:函数产生名不同,压栈顺序不同,不应由客户清理,客户清理则可执行文件大小更大(许多参考文章,有汇编解释)
    黑马程序员:Java基础总结----JavaBean 内省
    汇编语言理解指针(指针就是汇编的间接寻址,其实就是一个简单方便的运算指令,计算完毕直接就赋值,不是从内存中去取值后赋值)
    设计项目时候的几个小标记
    SendTextMessage如何打开记事本并显示指定内容
    汇编语言---call和ret指令
    汇编语言转移指令规则汇总
    SharePoint Access Service-PowerShell
    对所有CPU寄存器的简述(16位CPU14个,32位CPU16个)
  • 原文地址:https://www.cnblogs.com/tomin/p/Excel_second_develepment_serise2.html
Copyright © 2011-2022 走看看