用Visual Studio .NET自动化MS Excel(翻译)

 

Visual Studio .NET自动化MS Excel<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

介绍

我写这篇文章是为了回应那些我在的e-mail中得到的要求,就是如何自动化MS Excel。许多正在看这篇文章的人也许也对下面关于如何自动化MS Word文档有兴趣,这儿有链接Automating MS Word using C#, 还有另外一个链接 Automating MS Word using C++.

回到主题,在商业世界中有许多电子表格,越来越我们不会只创建和使用简单的Excel,例如存储敏感和非常重要的试验数据等等……

作为开始,在这篇文章中我们不会探究非常高级的在Excel中可用的自动化,但它会给出一个有望供其他人使用的框架,以便能改进和让它更加具有可扩展性。该框架允许你创建一个Excel对象,并控制一些基本功能例如得到工作表信息,还有从给定范围的工作表中提取数据。

我们不得不开发的程序有更大的范围,我将集中精力在Excel部分。但是有少数几个我们为文件系统导航使用到线程而开发的简洁的类,如果对这篇文章有足够多的响应,或则我有机会去做它,我会继续把它发布,期间我希望下面的文章对你有用。

背景

充分理解OOP思想,熟悉C#编程语言。

用到的代码

我将提供一个能用在你的项目中的Excel外覆类。这些代码将在下面讨论。我将不会太深入Excel对象模型,因为,首先它将是一个巨大的任务,第二已经存在一些Microsoft写的类似文档了,这只是一个对想了解如何建立一个Office自动化工程的初学者的快速入门教程:

建立一个新工程,为了简便起见,建立一个Windows应用程序,建好后,右键单击“解决方案资源管理器”,选择“添加引用”,等添加引用窗口出现后,选择“COM”标签,这将显示你机器上所有可用的组件名称。既然我们将使用MS Excel,你就向下移动滚动条直到找到: Microsoft Excel 11.0 Object Library.

注意:你的也许是不同的版本,这将取决于你机器上安装的Office的版本。这是MS Excel 2003.

 1 None.gif using  System;
 2 None.gif
 3 None.gif using  System.IO;
 4 None.gif
 5 None.gif using  System.Collections;
 6 None.gif
 7 None.gif using  System.Threading;
 8 None.gif
 9 None.gif using  Office  =  Microsoft.Office.Core;
10 None.gif
11 None.gif using  Excel  =  Microsoft.Office.Interop.Excel;
12 None.gif
13 None.gif using  System.Diagnostics;
14 None.gif
15 None.gif 
16 None.gif
17 None.gif namespace  ATPMain
18 None.gif
19 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
20InBlock.gif
21ExpandedSubBlockStart.gifContractedSubBlock.gif    /**//// <summary>
22InBlock.gif
23InBlock.gif    /// Project:    Code Project Demo
24InBlock.gif
25InBlock.gif    /// Author:        Vahe Karamian
26InBlock.gif
27InBlock.gif    /// Date:        03/01/2005
28InBlock.gif
29InBlock.gif    /// Version:    1.0
30InBlock.gif
31ExpandedSubBlockEnd.gif    /// </summary>

32InBlock.gif
33InBlock.gif    public class VkExcel
34InBlock.gif
35ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
36InBlock.gif
37InBlock.gif        private Excel.Application    excelApp = null;
38InBlock.gif
39InBlock.gif        private Excel.Workbook        excelWorkbook = null;
40InBlock.gif
41InBlock.gif        private Excel.Sheets            excelSheets = null;
42InBlock.gif
43InBlock.gif        private Excel.Worksheet        excelWorksheet = null;
44InBlock.gif
45InBlock.gif        
46InBlock.gif
47InBlock.gif        dot.gif
48InBlock.gif
49InBlock.gifusing Office = Microsoft.Office.Core;
50InBlock.gif
51InBlock.gifusing Excel = Microsoft.Office.Interop.Excel;
52InBlock.gif
53InBlock.gif

你要想能够在你的代码中使用Excel 对象,需要包含上面两个名称空间。我们需要一个Excel.Application 对象,一个Excel.Workbook 对象,一个 Excel.Sheets 对象, 还有一个Excel.Worksheet 对象。这些对象将用来控制和从Excel中提取数据,因此我们声明如下的一些变量来代表提及到的对象:excelApp, excelWorkbook, excelSheets, excelWorksheet.

 

  1 None.gif     dot.gif.
  2 None.gif
  3 None.gif 
  4 None.gif
  5 None.gif     private   static   object  vk_missing     =  System.Reflection.Missing.Value;
  6 None.gif
  7 None.gif 
  8 None.gif
  9 None.gif     private   static   object  vk_visible     =   true ;
 10 None.gif
 11 None.gif     private   static   object  vk_false         =   false ;
 12 None.gif
 13 None.gif     private   static   object  vk_true         =   true ;
 14 None.gif
 15 None.gif 
 16 None.gif
 17 None.gif     private   bool  vk_app_visible  =   false ;
 18 None.gif
 19 None.gif 
 20 None.gif
 21 None.gif     private   object     vk_filename;
 22 None.gif
 23 None.gif 
 24 None.gif
 25 ContractedBlock.gifExpandedBlockStart.gif OPEN WORKBOOK VARIABLES #region OPEN WORKBOOK VARIABLES
 26InBlock.gif
 27InBlock.gif    private object vk_update_links                    = 0;
 28InBlock.gif
 29InBlock.gif    private object vk_read_only                        = vk_true;
 30InBlock.gif
 31InBlock.gif    private object vk_format                        = 1;
 32InBlock.gif
 33InBlock.gif    private object vk_password                        = vk_missing;
 34InBlock.gif
 35InBlock.gif    private object vk_write_res_password            = vk_missing;
 36InBlock.gif
 37InBlock.gif    private object vk_ignore_read_only_recommend     = vk_true;
 38InBlock.gif
 39InBlock.gif    private object vk_origin                        = vk_missing;
 40InBlock.gif
 41InBlock.gif    private object vk_delimiter                        = vk_missing;
 42InBlock.gif
 43InBlock.gif    private object vk_editable                        = vk_false;
 44InBlock.gif
 45InBlock.gif    private object vk_notify                        = vk_false;
 46InBlock.gif
 47InBlock.gif    private object vk_converter                        = vk_missing;
 48InBlock.gif
 49InBlock.gif    private object vk_add_to_mru                    = vk_false;
 50InBlock.gif
 51InBlock.gif    private object vk_local                            = vk_false;
 52InBlock.gif
 53InBlock.gif    private object vk_corrupt_load                    = vk_false;
 54InBlock.gif
 55ExpandedBlockEnd.gif#endregion

 56 None.gif
 57 None.gif 
 58 None.gif
 59 ContractedBlock.gifExpandedBlockStart.gif CLOSE WORKBOOK VARIABLES #region CLOSE WORKBOOK VARIABLES
 60InBlock.gif
 61InBlock.gif    private object vk_save_changes        = vk_false;
 62InBlock.gif
 63InBlock.gif    private object vk_route_workbook     = vk_false;
 64InBlock.gif
 65ExpandedBlockEnd.gif#endregion

 66 None.gif
 67 None.gif 
 68 None.gif
 69 ExpandedBlockStart.gifContractedBlock.gif     /**/ /// <summary>
 70InBlock.gif
 71InBlock.gif    /// Vahe Karamian - 03/04/2005 - Excel Object Constructor.
 72InBlock.gif
 73ExpandedBlockEnd.gif    /// </summary>

 74 None.gif
 75 None.gif     public  VkExcel()
 76 None.gif
 77 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
 78InBlock.gif
 79InBlock.gif        this.startExcel();
 80InBlock.gif
 81ExpandedBlockEnd.gif    }

 82 None.gif
 83 None.gif 
 84 None.gif
 85 ExpandedBlockStart.gifContractedBlock.gif     /**/ /// <summary>
 86InBlock.gif
 87InBlock.gif    /// Vahe Karamian - 03/04/2005 - Excel Object Constructor
 88InBlock.gif
 89InBlock.gif    /// visible is a parameter, either TRUE or FALSE, of type object.
 90InBlock.gif
 91InBlock.gif    /// </summary>
 92InBlock.gif
 93ExpandedBlockEnd.gif    /// Visible parameter, true for visible, false for non-visible

 94 None.gif
 95 None.gif     public  VkExcel( bool  visible)
 96 None.gif
 97 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
 98InBlock.gif
 99InBlock.gif        this.vk_app_visible = visible;
100InBlock.gif
101InBlock.gif        this.startExcel();
102InBlock.gif
103ExpandedBlockEnd.gif    }

104 None.gif
105 None.gif    dot.gif
106 None.gif
107 None.gif

在上面的代码块中,我们预先定义了一些常量,将会使用这些来打开一个给定的Excel文件,要找出更多关于每个参数代表什么,能做什么,你应该查询与Excel一起的文档。

我们有两个构造函数: VkExcel() ,默认构造函数将启动一个隐藏的Excel,而另外一个VkExcel(bool visible) 构造函数,将给你一个选择,确认Excel应用程序是否可见。

 1 None.gif     dot.gif
 2 None.gif
 3 ExpandedBlockStart.gifContractedBlock.gif     /**/ /// <summary>
 4InBlock.gif
 5InBlock.gif    /// Vahe Karamian - 03/04/2005 - Start Excel Application
 6InBlock.gif
 7ExpandedBlockEnd.gif    /// </summary>

 8 None.gif
 9 ContractedBlock.gifExpandedBlockStart.gif START EXCEL #region START EXCEL
10InBlock.gif
11InBlock.gif    private void startExcel()
12InBlock.gif
13ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
14InBlock.gif
15InBlock.gif        ifthis.excelApp == null )
16InBlock.gif
17ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
18InBlock.gif
19InBlock.gif            this.excelApp = new Excel.ApplicationClass();
20InBlock.gif
21ExpandedSubBlockEnd.gif        }

22InBlock.gif
23InBlock.gif 
24InBlock.gif
25InBlock.gif        // Make Excel Visible
26InBlock.gif
27InBlock.gif        this.excelApp.Visible = this.vk_app_visible;
28InBlock.gif
29ExpandedSubBlockEnd.gif    }

30InBlock.gif
31ExpandedBlockEnd.gif#endregion

32 None.gif
33 None.gif 
34 None.gif
35 ExpandedBlockStart.gifContractedBlock.gif     /**/ /// <summary>
36InBlock.gif
37InBlock.gif    /// Vahe Karamian - 03/23/2005 - Kill the current Excel Process
38InBlock.gif
39ExpandedBlockEnd.gif    /// </summary>

40 None.gif
41 ContractedBlock.gifExpandedBlockStart.gif STOP EXCEL #region STOP EXCEL
42InBlock.gif
43InBlock.gif    public void stopExcel()
44InBlock.gif
45ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
46InBlock.gif
47InBlock.gif        ifthis.excelApp != null )
48InBlock.gif
49ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
50InBlock.gif
51InBlock.gif            Process[] pProcess; 
52InBlock.gif
53InBlock.gif            pProcess = System.Diagnostics.Process.GetProcessesByName("Excel");
54InBlock.gif
55InBlock.gif            pProcess[0].Kill();
56InBlock.gif
57ExpandedSubBlockEnd.gif        }

58InBlock.gif
59ExpandedSubBlockEnd.gif    }

60InBlock.gif
61ExpandedBlockEnd.gif#endregion

62 None.gif
63 None.gif    dot.gif
64 None.gif
65 None.gif

上面的代码启动和停止Excel应用程序。startExcel() 检查excelApp 对象是否初始化,如果已经初始化,仅确认设定在visible属性的可见性;如果没有初始化,就继续向前,初始化对象。stopExcel() 也检查对象是否正在使用,如果是就关闭该进程。

注意:pProcess[0].Kill() 将确认Excel正常运行!有些做Excel自动化的人总是抱怨,在他们退出应用程序后,Excel消失了,但是Excel进程仍然在任务监视器里,这代码将为你处理好那情况!

 

 1 None.gif    dot.gif
 2 None.gif
 3 ExpandedBlockStart.gifContractedBlock.gif     /**/ /// <summary>
 4InBlock.gif
 5InBlock.gif    /// Vahe Karamian - 03/09/2005 - Open File function for Excel 2003
 6InBlock.gif
 7InBlock.gif    /// The following function will take in a filename, and a password
 8InBlock.gif
 9InBlock.gif    /// associated, if needed, to open the file.
10InBlock.gif
11ExpandedBlockEnd.gif    /// </summary>

12 None.gif
13 ContractedBlock.gifExpandedBlockStart.gif OPEN FILE FOR EXCEL #region OPEN FILE FOR EXCEL
14InBlock.gif
15InBlock.gif    public string OpenFile(string fileName, string password)
16InBlock.gif
17ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
18InBlock.gif
19InBlock.gif        vk_filename = fileName;
20InBlock.gif
21InBlock.gif 
22InBlock.gif
23InBlock.gif        if( password.Length > 0 )
24InBlock.gif
25ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
26InBlock.gif
27InBlock.gif            vk_password = password;
28InBlock.gif
29ExpandedSubBlockEnd.gif        }

30InBlock.gif
31InBlock.gif 
32InBlock.gif
33InBlock.gif        try
34InBlock.gif
35ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
36InBlock.gif
37InBlock.gif            // Open a workbook in Excel
38InBlock.gif
39InBlock.gif            this.excelWorkbook = this.excelApp.Workbooks.Open(
40InBlock.gif
41InBlock.gif                fileName, vk_update_links, vk_read_only, vk_format, vk_password,
42InBlock.gif
43InBlock.gif                vk_write_res_password, vk_ignore_read_only_recommend, vk_origin,
44InBlock.gif
45InBlock.gif                vk_delimiter, vk_editable, vk_notify, vk_converter, vk_add_to_mru,
46InBlock.gif
47InBlock.gif                vk_local, vk_corrupt_load);
48InBlock.gif
49ExpandedSubBlockEnd.gif        }

50InBlock.gif
51InBlock.gif        catch(Exception e)
52InBlock.gif
53ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
54InBlock.gif
55InBlock.gif            this.CloseFile();
56InBlock.gif
57InBlock.gif            return e.Message;
58InBlock.gif
59ExpandedSubBlockEnd.gif        }

60InBlock.gif
61InBlock.gif        return "OK";
62InBlock.gif
63ExpandedSubBlockEnd.gif    }

64InBlock.gif
65ExpandedBlockEnd.gif#endregion

66 None.gif
67 None.gif 
68 None.gif
69 None.gif     public   void  CloseFile()
70 None.gif
71 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
72InBlock.gif
73InBlock.gif        excelWorkbook.Close( vk_save_changes, vk_filename, vk_route_workbook );
74InBlock.gif
75ExpandedBlockEnd.gif    }

76 None.gif
77 None.gif    dot.gif
78 None.gif
79 None.gif

好的,这样看来,上面的代码允许我们打开一个Excel文件。OpenFile(string fileName, string password) 携带两个参数,文件名,或者是完整名称,路径+文件名,还有就是密码参数,该密码是用来保护表格的。注意这个打开函数携带了一大串参数,我们在类中已经定义了它们。CloseFile() 将会关闭文件。

注意: 这些代码是为MS Excel 2003提供的,对于更早的版本,参数有一点不同,你需要去查看下文档。如果你需要帮助,给我发一个e-mail,我将尽量帮助你解决。

 1 None.gif     dot.gif
 2 None.gif
 3 ExpandedBlockStart.gifContractedBlock.gif     /**/ /// <summary>
 4InBlock.gif
 5InBlock.gif    /// Vahe Karamian - 03/20/2005 - Get Excel Sheets
 6InBlock.gif
 7InBlock.gif    /// Get the collection of sheets in the workbook
 8InBlock.gif
 9ExpandedBlockEnd.gif    /// </summary>

10 None.gif
11 ContractedBlock.gifExpandedBlockStart.gif GET EXCEL SHEETS #region GET EXCEL SHEETS
12InBlock.gif
13InBlock.gif    public void GetExcelSheets()
14InBlock.gif
15ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
16InBlock.gif
17InBlock.gif        ifthis.excelWorkbook != null )
18InBlock.gif
19ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
20InBlock.gif
21InBlock.gif            excelSheets = excelWorkbook.Worksheets;
22InBlock.gif
23ExpandedSubBlockEnd.gif        }

24InBlock.gif
25ExpandedSubBlockEnd.gif    }

26InBlock.gif
27ExpandedBlockEnd.gif#endregion

28 None.gif
29 None.gif 
30 None.gif
31 ExpandedBlockStart.gifContractedBlock.gif     /**/ /// <summary>
32InBlock.gif
33InBlock.gif    /// Vahe Karamian - 03/21/2005 - Find Excel ATP Worksheet
34InBlock.gif
35InBlock.gif    /// Search for ATP worksheet, if found return TRUE
36InBlock.gif
37InBlock.gif    /// </summary>
38InBlock.gif
39ExpandedBlockEnd.gif    /// <returns>bool</returns>

40 None.gif
41 ContractedBlock.gifExpandedBlockStart.gif FIND EXCEL ATP WORKSHEET #region FIND EXCEL ATP WORKSHEET
42InBlock.gif
43InBlock.gif    public bool FindExcelATPWorksheet(string worksheetName)
44InBlock.gif
45ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
46InBlock.gif
47InBlock.gif        bool ATP_SHEET_FOUND = false;
48InBlock.gif
49InBlock.gif 
50InBlock.gif
51InBlock.gif        ifthis.excelSheets != null )
52InBlock.gif
53ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
54InBlock.gif
55InBlock.gif            // Step thru the worksheet collection and see if ATP sheet is
56InBlock.gif
57InBlock.gif            // available. If found return true;
58InBlock.gif
59InBlock.gif            forint i=1; i<=this.excelSheets.Count; i++ )
60InBlock.gif
61ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
62InBlock.gif
63InBlock.gif                this.excelWorksheet = 
64InBlock.gif
65InBlock.gif                   (Excel.Worksheet)excelSheets.get_Item((object)i);
66InBlock.gif
67InBlock.gif                ifthis.excelWorksheet.Name.Equals(worksheetName) )
68InBlock.gif
69ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
70InBlock.gif
71InBlock.gif                    this.excelWorksheet.Activate();
72InBlock.gif
73InBlock.gif                    ATP_SHEET_FOUND = true;
74InBlock.gif
75InBlock.gif                    return ATP_SHEET_FOUND;
76InBlock.gif
77ExpandedSubBlockEnd.gif                }

78InBlock.gif
79ExpandedSubBlockEnd.gif            }

80InBlock.gif
81ExpandedSubBlockEnd.gif        }

82InBlock.gif
83InBlock.gif        return ATP_SHEET_FOUND;
84InBlock.gif
85ExpandedSubBlockEnd.gif    }

86InBlock.gif
87ExpandedBlockEnd.gif#endregion

88 None.gif
89 None.gif    dot.gif
90 None.gif
91 None.gif

 

上面的代码演示怎样得到一个工作簿中所有的电子表格,还有得到一个确定的表格并从中提取数据。GetExcelSheets()得到所有表格. FindExcelATPWorkSheet(string worksheetName) 搜索名为worksheetName表格。

 1 None.gif     dot.gif
 2 None.gif
 3 ExpandedBlockStart.gifContractedBlock.gif     /**/ /// <summary>
 4InBlock.gif
 5InBlock.gif    /// Vahe Karamian - 03/22/2005 - Get Range from Worksheet
 6InBlock.gif
 7InBlock.gif    /// Return content of range from the selected range
 8InBlock.gif
 9InBlock.gif    /// </summary>
10InBlock.gif
11ExpandedBlockEnd.gif    /// Range parameter: Example, GetRange("A1:D10")

12 None.gif
13 ContractedBlock.gifExpandedBlockStart.gif GET RANGE #region GET RANGE
14InBlock.gif
15InBlock.gif    public string[] GetRange(string range)
16InBlock.gif
17ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
18InBlock.gif
19InBlock.gif        Excel.Range workingRangeCells = excelWorksheet.get_Range(range,Type.Missing);
20InBlock.gif
21InBlock.gif        //workingRangeCells.Select();
22InBlock.gif
23InBlock.gif        System.Array array = (System.Array)workingRangeCells.Cells.Value2;
24InBlock.gif
25InBlock.gif        string[] arrayS = this.ConvertToStringArray(array);
26InBlock.gif
27InBlock.gif 
28InBlock.gif
29InBlock.gif        return arrayS;
30InBlock.gif
31ExpandedSubBlockEnd.gif    }

32InBlock.gif
33ExpandedBlockEnd.gif#endregion

34 None.gif
35 None.gif    dot.gif
36 None.gif
37 None.gif

GetRange(string range) 这个函数用来从Excel表格中实际上得到数据,我们转化返回的值把它们放入一个string[]. 我们用接下来的函数完成这工作:this.ConvertToStringArray(array). 然后这个string[]被返回给调用者,调用者可用以任何方式来使用它。

 

 1 None.gif    dot.gif
 2 None.gif
 3 ExpandedBlockStart.gifContractedBlock.gif     /**/ /// <summary>
 4InBlock.gif
 5InBlock.gif    /// Vahe Karamian - 03/22/2005 - Convert To String Array
 6InBlock.gif
 7InBlock.gif    /// Convert System.Array into string[]
 8InBlock.gif
 9InBlock.gif    /// </summary>
10InBlock.gif
11InBlock.gif    /// Values from range object
12InBlock.gif
13ExpandedBlockEnd.gif    /// <returns>String[]</returns>

14 None.gif
15 ContractedBlock.gifExpandedBlockStart.gif CONVERT TO STRING ARRAY #region CONVERT TO STRING ARRAY
16InBlock.gif
17InBlock.gif    private string[] ConvertToStringArray(System.Array values)
18InBlock.gif
19ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
20InBlock.gif
21InBlock.gif        string[] newArray = new string[values.Length];
22InBlock.gif
23InBlock.gif 
24InBlock.gif
25InBlock.gif        int index = 0;
26InBlock.gif
27InBlock.gif        for ( int i = values.GetLowerBound(0); i <= values.GetUpperBound(0); i++ )
28InBlock.gif
29ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
30InBlock.gif
31InBlock.gif            for ( int j = values.GetLowerBound(1); j <= values.GetUpperBound(1); j++ )
32InBlock.gif
33ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
34InBlock.gif
35InBlock.gif                if(values.GetValue(i,j)==null)
36InBlock.gif
37ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
38InBlock.gif
39InBlock.gif                    newArray[index]="";
40InBlock.gif
41ExpandedSubBlockEnd.gif                }

42InBlock.gif
43InBlock.gif                else
44InBlock.gif
45ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
46InBlock.gif
47InBlock.gif                    newArray[index]=(string)values.GetValue(i,j).ToString();
48InBlock.gif
49ExpandedSubBlockEnd.gif                }

50InBlock.gif
51InBlock.gif                index++;
52InBlock.gif
53ExpandedSubBlockEnd.gif            }

54InBlock.gif
55ExpandedSubBlockEnd.gif        }

56InBlock.gif
57InBlock.gif        return newArray;
58InBlock.gif
59ExpandedSubBlockEnd.gif    }

60InBlock.gif
61ExpandedBlockEnd.gif#endregion

62 None.gif
63 None.gif}
64 None.gif
65 None.gif

在最后的代码部分: ConvertToStringArray(System.Array values) 将接收这个从GetRange(...) 传来的数组,把数组放入一个字符串数组中,并返回它。

我们已经到达了我们对象的结尾,就像你能看到的,它是一个只有最小功能的非常简单的对象,但它对任何需要快速入门的人是一个很好的起点,而且你能非常简单地把它扩展成一个更加复杂的对象。

我没有包含一个demo工程。原因是使用这个工程是相当简单的。你只要按照下面的步骤初始化和使用 VkExcel对象。

  1. 建立一个VkExcel类型的对象:VkExcel excel = new VkExcel(false);. 记住那个VkExcel(...) 带了一个参数,确认Excel程序是否可见。

  2. 打开一个Excel文件:file: string status = excel.OpenFile( filename, password );, 传人文件名或者完整文件名(如果你使用的是一个OpenFileDialog),如果文件没有密码保护,把password设为null

  3. 检查文件是否成功打开: if( status.equal("OK")) ...

  4. 重新得到Excel表格: excel.GetExcelSheets(); 将得到对象内的所有表格。

  5. 搜索特定的表格:excel.FindExcelWorksheet(worksheetName); 将查找给定文件中任何的表格,传人worksheetName作为参数。

  6. 获取给定范围的数据:string[] A4D4 = excel.GetRange("A4:D4"); 这将以string[]形式返回范围内的值。

以上就是全部了!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值