精华内容
下载资源
问答
  • 而Microsoft Word中对宏定义为:“宏就是能组织到一起作为一独立的命令使用的一系列word命令,它能使日常工作变得更容易”。Word使用宏语言Visual Basic将宏作为一系列指令来编写。如何录制宏录制宏就是将所完成的...

    点击蓝字

    b0e300328c9aee3a1008352104506360.png

    关注我们

    宏就是一些命令组织在一起,作为一个单独命令完成一个特定任务。

    而Microsoft Word中宏定义为:“宏就是能组织到一起作为一独立的命令使用的一系列word命令,它能使日常工作变得更容易”。

    Word使用宏语言Visual Basic将宏作为一系列指令来编写。

    如何录制宏

    录制宏就是将所完成的操作翻译为Visual Basic代码的过程。默认情况下,Word将宏存储在Normal模板内,这样每一个Word文档都可以使用它,也可以将宏保存在某一个文档中,仅供该文档使用。

    例如,录制一个在Word文档中插入5行4列表格的宏时, 具体操作方法如下。

    第1步:切换到【开发工具】选项卡;在【代码】组中单击【录制宏】按钮,如下图所示。

    8cf50e51d3ab8ec5ba0da710c34735bb.png

    第2步:打开【录制宏】对话框,在【宏名】文本框中输入要录制的宏名,它可以在宏按钮的功能提示中显示出来。

    例如,这里输入“插入5行4列表格”;在【将宏保存在】下拉列表中默认选择【所有文档(Normal.dotm)】选项,将宏保存为模板,在所有的文档中都可以使用;单击【键盘】按钮,如下图所示。

    a6b51cb511acad7451f49befd3ddee49.png

    第3步:打开【自定义键盘】对话框,将光标定位在【请按新快捷键】文本框中,按下〈Ctrl〉+〈N〉组合键,这样以后按下该快捷键即可运行此宏,如下图所示。

    d25c3fd3e3e24856d714fb69fc88643f.png

    第4步:单击按钮,即可将〈Ctrl〉+〈N〉组合键添加到【当前快捷键】列表框中;单击按钮,如下图所示。

    1971d78744fda6e7f0f0d8409418c028.png

    第5步:此时鼠标指针呈形状,表示正在录制宏,切换到【插入】选项卡;在【表格】组中单击【表格】按钮;从弹出的下拉列表中选择要插入表格的行和列,这里选择5行4列,如下图所示。

    57e627fd3eadf47ed9cf6c727e144d6d.png

    第6步:此时,在文档中添加了一个5行4列的表格,如下图所示。

    57e90ce5a5fa297ce180d3d6ab1ae98f.png

    第7步:录制完成后,切换到【开发工具】选项卡;在【代码】组中单击【停止录制】按钮,如下图所示。

    aaf56caffc77cf7dee71d45d29a6163d.png

    第8步:即可退出录制状态。此后若需要在Word文档中插入5行4列的表格时,只需按下已经定义的宏快捷键〈Ctrl〉+〈N〉即可,如下图所示。

    20d83501e820e14e41d0bf12359ed41e.png

    如何运行宏

    宏录制完后,用户可以运行宏,运行宏的方法有很多种,包括使用宏快捷键、通过【宏】按钮和使用Visual Basic编辑器等。例如,通过单击【宏】按钮来运行宏,具体操作方法如下。

    第1步:切换到【开发工具】选项卡;在【代码】组中单击【查看宏】按钮,如下图所示。

    e2aa663f820bf7b60a406612e85ce9c6.png

    第2步:打开【宏】对话框,在【宏名】列表框中选择要运行的宏,例如选择“插入5行4列表格”;单击按钮,如下图所示。

    d7ea0d86b4130f5dbd7e66917cd4bcd5.png

    第3步:即可在Word文档中运行该宏,运行结果如下图所示。

    16c9b96edb924a01ba20991a14a261f6.png

    推荐阅读

    Word也能处理图片,而且比PS还简单,很多人都没听说过!善用Word的这两个功能,自己也能把文档做成电子书!简单几个排版技巧,让你的Word文档比报刊杂志还美观b0e300328c9aee3a1008352104506360.png

    关注我们

    新精英充电站

    职场精英都在看

    fc83a955f6d4692475c4c487778c8071.png
    展开全文
  • 这个程序演示了使用Word作为自动化服务器...这个调用英文和法文版的 Word中相同。对德文版的Word,这个过程名是翻译后的。如果这个过程不存在,存在一个不同的Word翻译版本,还可以插入中文Word,运行效果如图所示。
  • 这个程序演示了使用Word作为自动化服务器,Delphi地自动化控制器是如何将一个查询结果插入到...这个调用英文和法文版的 Word中相同。如果这个过程不存在,存在一个不同的Word翻译版本。  对中文Word请指定处插入。
  • 例如,录制一个在Word文档插入5行4列表格的宏时, 具体操作方法如下。第1步:切换到【开发工具】选项卡;在【代码】组单击【录制宏】按钮,如下图所示。第2步:打开【录制宏】对话框,在【宏名...

    如何录制宏

    录制宏就是将所完成的操作翻译为Visual Basic代码的过程。默认情况下,Word将宏存储在Normal模板内,这样每一个Word文档都可以使用它,也可以将宏保存在某一个文档中,仅供该文档使用。例如,录制一个在Word文档中插入5行4列表格的宏时, 具体操作方法如下。

    第1步:切换到【开发工具】选项卡;在【代码】组中单击【录制宏】按钮,如下图所示。

    d8a3dbadb8316dae354bfd8fd6f3b7a8.png

    第2步:打开【录制宏】对话框,在【宏名】文本框中输入要录制的宏名,它可以在宏按钮的功能提示中显示出来。例如,这里输入"插入5行4列表格";在【将宏保存在】下拉列表中默认选择【所有文档(Normal.dotm)】选项,将宏保存为模板,在所有的文档中都可以使用;单击【键盘】按钮,如下图所示。

    5e2b951707f217e0202007dbc5364754.png

    第3步:打开【自定义键盘】对话框,将光标定位在【请按新快捷键】文本框中,按下〈Ctrl〉+〈N〉组合键,这样以后按下该快捷键即可运行此宏,如下图所示。

    0dd7a6d8170f6dedd3cea15bb4ff0bba.png

    第4步:单击按钮,即可将〈Ctrl〉+〈N〉组合键添加到【当前快捷键】列表框中;单击按钮,如下图所示。

    066abd081bf9adc3756be931ea6e319e.png

    第5步:此时鼠标指针呈形状,表示正在录制宏,切换到【插入】选项卡;在【表格】组中单击【表格】按钮;从弹出的下拉列表中选择要插入表格的行和列,这里选择5行4列,如下图所示。

    01555fdba287bd05b5b0e38c8744c70d.png

    第6步:此时,在文档中添加了一个5行4列的表格,如下图所示。

    15eaa79aa65707b2f992b140c7611b10.png

    第7步:录制完成后,切换到【开发工具】选项卡;在【代码】组中单击【停止录制】按钮,如下图所示。

    6c7e7075e231b1daa6a06bfd5576e334.png

    第8步:即可退出录制状态。此后若需要在Word文档中插入5行4列的表格时,只需按下已经定义的宏快捷键〈Ctrl〉+〈N〉即可,如下图所示。

    b77e103a50d1e4f4d69d54e3f34122be.png

    如何运行宏

    宏录制完后,用户可以运行宏,运行宏的方法有很多种,包括使用宏快捷键、通过【宏】按钮和使用Visual Basic编辑器等。例如,通过单击【宏】按钮来运行宏,具体操作方法如下。

    第1步:切换到【开发工具】选项卡;在【代码】组中单击【查看宏】按钮,如下图所示。

    6f8b99ba26559e494645b907efd2daf8.png

    第2步:打开【宏】对话框,在【宏名】列表框中选择要运行的宏,例如选择"插入5行4列表格";单击按钮,如下图所示。

    d7e7994f388752f18e1d702761676355.png

    第3步:即可在Word文档中运行该宏,运行结果如下图所示。

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

    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.

     1None.gifusing System;
     2None.gif
     3None.gifusing System.IO;
     4None.gif
     5None.gifusing System.Collections;
     6None.gif
     7None.gifusing System.Threading;
     8None.gif
     9None.gifusing Office = Microsoft.Office.Core;
    10None.gif
    11None.gifusing Excel = Microsoft.Office.Interop.Excel;
    12None.gif
    13None.gifusing System.Diagnostics;
    14None.gif
    15None.gif 
    16None.gif
    17None.gifnamespace ATPMain
    18None.gif
    19ExpandedBlockStart.gifContractedBlock.gifdot.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.

     

      1None.gif    dot.gif.
      2None.gif
      3None.gif 
      4None.gif
      5None.gif    private static object vk_missing    = System.Reflection.Missing.Value;
      6None.gif
      7None.gif 
      8None.gif
      9None.gif    private static object vk_visible    = true;
     10None.gif
     11None.gif    private static object vk_false        = false;
     12None.gif
     13None.gif    private static object vk_true        = true;
     14None.gif
     15None.gif 
     16None.gif
     17None.gif    private bool vk_app_visible = false;
     18None.gif
     19None.gif 
     20None.gif
     21None.gif    private object    vk_filename;
     22None.gif
     23None.gif 
     24None.gif
     25ContractedBlock.gifExpandedBlockStart.gifOPEN 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

     56None.gif
     57None.gif 
     58None.gif
     59ContractedBlock.gifExpandedBlockStart.gifCLOSE 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

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

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

     82None.gif
     83None.gif 
     84None.gif
     85ExpandedBlockStart.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

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

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

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

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

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

     8None.gif
     9ContractedBlock.gifExpandedBlockStart.gifSTART 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

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

    40None.gif
    41ContractedBlock.gifExpandedBlockStart.gifSTOP 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

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

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

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

     

     1None.gif   dot.gif
     2None.gif
     3ExpandedBlockStart.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>

    12None.gif
    13ContractedBlock.gifExpandedBlockStart.gifOPEN 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

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

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

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

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

     1None.gif    dot.gif
     2None.gif
     3ExpandedBlockStart.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>

    10None.gif
    11ContractedBlock.gifExpandedBlockStart.gifGET 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

    28None.gif
    29None.gif 
    30None.gif
    31ExpandedBlockStart.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>

    40None.gif
    41ContractedBlock.gifExpandedBlockStart.gifFIND 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

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

     

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

     1None.gif    dot.gif
     2None.gif
     3ExpandedBlockStart.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")

    12None.gif
    13ContractedBlock.gifExpandedBlockStart.gifGET 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

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

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

     

     1None.gif   dot.gif
     2None.gif
     3ExpandedBlockStart.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>

    14None.gif
    15ContractedBlock.gifExpandedBlockStart.gifCONVERT 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

    62None.gif
    63None.gif}
    64None.gif
    65None.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[]形式返回范围内的值。

    以上就是全部了!

     

    转载于:https://www.cnblogs.com/sifang2004/archive/2006/02/04/325345.html

    展开全文
  • 在word中,应该如何做到呢?有两个方法可以实现这个需求,方法一是使用list num域为各级标题添加多级列表,方法二是使用段落功能区多级列表按钮为各级标题添加多级列表。有中英文两套文本,所以就需要有中英文两套...

    6dd4dd17eaf13345a9fec6c518f884c5.png

    e5812086f3c2bed639f482a17384dd34.png

    在工作中会遇到一些中英混排的文档,相互翻译对照,要求中英文对应级别的标题编号需要一致,而且中英文各自的标题编号都是自动连续的,效果如下图所示。在word中,应该如何做到呢?

    95098b2d2748bb6c98c0db500a6c6525.png

    有两个方法可以实现这个需求,方法一是使用list num域为各级标题添加多级列表,方法二是使用段落功能区多级列表按钮为各级标题添加多级列表。

    有中英文两套文本,所以就需要有中英文两套段落样式和两套多级列表样式,这是事先要做的基础工作。这两套样式只要名称不一样,其他设置可以一样。段落样式要先建立,然后再建立列表样式。方法二一定要先建立段落样式,然后在建立列表样式的时候,各级编号就可以链接到相应的标题样式了。

    为简化说明,在这里讨论的文本只有两级标题。

    段落样式:中文,可以建立“中文标题1”和“中文标题2”两种样式;英文,可以建立“英文标题1”和“英文标题2”两种样式。分别应用到文档里的中英文标题。

    列表样式:可以新建“列表1”和“列表2”两种样式。“列表1”对应中文,“列表2”对应英文。要“定义新的列表样式”,而不是“新的多级列表”,将两个列表样式的“list num域列表名”也分别设置为与列表名称同名,即也为“列表1”和“列表2”。

    具体的操作可以参考我的文章阿德:更加灵活的word多级列表——listnum域

    方法一:使用list num 域为各级标题添加多级列表

    如下图所示:

    在应用了中文标题1样式的段落前输入域代码{ listnum 列表1 l 1 },表示应用“列表1”多级列表的一级编号;

    在应用了英文标题1样式的段落前输入域代码{ listnum 列表2 l 1 },表示应用“列表2”多级列表的一级编号;

    在应用了中文标题2样式的段落前输入域代码{ listnum 列表1 l 2 },表示应用“列表1”多级列表的二级编号;

    在应用了英文标题2样式的段落前输入域代码{ listnum 列表2 l 2 },表示应用“列表2”多级列表的二级编号;

    假如还有标题3,域代码就为{ listnum 列表1 l 3 },依此类推。

    然后选中全文,按F9切换域代码为域结果,即可得到上图所要的效果。

    快速为各级标题添加域代码的方法也可参考我的文章阿德:更加灵活的word多级列表——listnum域

    91cf90aa7e0c82abca4a0fae17eac218.png

    方法二:使用段落功能区多级列表按钮为各级标题添加多级列表

    先有段落样式,然后在建立列表样式的时候,各级编号就可以链接到相应的标题样式了。应用多级列表的常规操作可以在网络上搜索,还是很容易找到的。

    成功创建列表样式,并链接到相应标题样式后,点击段落功能区的多级列表按钮,在出现的下拉菜单中就可以看到新建立的两个列表样式,各级编号与标题样式的链接关系也可以预览到。如下图所示。

    b69e943d68eac45f83104d2d0dd85879.png

    有时候,这两个多级列表可能会相互干扰,有一个多级列表的显示不正确,此时可以再对该多级列表重新操作应用一遍。

    有时候在多级列表按钮下的下拉菜单中可能找不到新建的列表样式,这时可以到“管理样式”对话框中找到,如下图所示,在“编辑”选项卡下,把排序规则调为“按类型”,把滑块拉到最下面,因为列表样式一般排在最后,这时就可以看到新建的多级列表样式。选中一个列表样式,再点击“修改”按钮,就可以对列表样式进行修改了。

    4f64bc4af2149b48ac1965a07dd5c77e.png

    感觉方法二效果不太稳定,推荐使用方法一。感谢观看有什么不明白的,可以评论私信。

    展开全文
  • word上的格式复制粘贴过来都没有了,有些是段落的总结不是正文翻译) 摘要 随着开源软件发展的日益普及,软件工件的数量有了巨大的增长,使人们能够深入了解如何构建软件。研究人员总是寻找大规模的、有代表性...
  • 摘要:本文主要介绍如何对GridView和DetailsView的新增、编辑功能进行完善,将原来自动生成的绑定列转换为模板列,进而增加验证控件,有助于更多了解ASP.NET 2.0中新的特性。 译注:Scott Mitchell写的46篇(现在...
  • 词法间的关系也是千变万化,如何在课本里边得到这些知识?其实,如果我们反过来想这个问题,学英语,最常用的除了说,还有什么,就是读,对,就是阅读!学习本来就是一个漫长的过程,对于各种知识的返复的使用以积累...
  • asp.net知识库

    2015-06-18 08:45:45
    DataGridView中如何在textbox列限制输入。 ASP.NET 2.0构建动态导航的Web应用程序(TreeView和Menu ) 体验.net2.0的优雅(3) -- 为您的 SiteMap 添加 控制转发功能 GridView控件使用经验 ASP.NET 2.0:弃用 ...
  • (在Word中不可以更改公式文字颜色。)点击“样式”菜单下的“定义”项,在弹出的对话框中你可以设置默认用的字体效果:点选“高级”按钮后显示更多项目的字体设置,你可以为不同的文字、符号等设置不同的默认字体和...
  • 图解word2vec(原文翻译) 2019腾讯广告算法大赛方案分享(冠军) 推荐:腾讯开源的词向量精简版本下载 《李宏毅机器学习完整笔记》发布,Datawhale开源项目LeeML-Notes 特征工程的宝典-《Feature Engineering for ...

空空如也

空空如也

1 2 3 4
收藏数 75
精华内容 30
关键字:

如何在word中自动翻译