zoukankan      html  css  js  c++  java
  • 如何从MS Word的表格中提取指定单元格的数据

        最近在做一个项目,其中有一个技术性的难题:“提取Word指定表格中的指定单元格的数据”。对于像我这样一个仅仅对于C#语法略有了解的学生来说确实让我感到有些力不从心,这真是一个非常非常大的挑战。

        登录google,我检索了相当多的文章,从多的500多行的代码到少的不到100行的代码。这些提取数据的方法基本上就那么几种,这些人放在博客上基本上都是你copy我的,我copy你的。现在的有些作者很不负责,拿来一段代码就放上去了。通览这些代码,你会发现有些地方居然用到了作者自定义的类;然而,作者却没有提供给你这些类的实现方法。这样的作者很是气人!还有些作者,在自己的博客上狂贴了几百行的代码,外加一个标题就完了。代码是什么意思,程序整个的实现流程是什么样子的,说都不说。这些代码很多,谁都懒得去看。精辟的文章很少,我百里挑一,经过几个星期的查找和筛选,终于整理出来一套可行的方案。本文通过一个简单的例子,来揭示如何从Word的表格提取指定单元格数据的方法。

    准备工作:
    新建Word文档doc1.doc。绘制表格,并且在表格中插入数据,如下表:

    Id

    Name

    1

    Wulei

    2

    Jack

     

     

     

     

    界面设计及程序运行过程界面截图:

    说明:通过打开按钮打开文件(将文件路径显示在TextBox控件中)

    打开刚刚建立的文件doc1.doc

    读取第二行第1列数据,显示在TextBox控件中。

    方法步骤:
    1.在引用处添加引用,引用Microsoft.Office.Interop.Word;


    2.使用命名空间Microsoft.Office.Interop.Word和System.Reflection;
    3.编写打开按钮代码和读取Word表格按钮事件代码。

    因为主要部分在读取Word表格按钮事件代码,因此以下将分享最重要最核心的代码:

     1 private void ReadTable_Click(object sender, EventArgs e)
     2 {
     3     ApplicationClass cls = null;
     4     Document doc = null;
     5 
     6     Table table = null;
     7     object missing = Missing.Value;
     8     int rowIndex = 2, colIndex = 1;
     9 
    10     object path = fileName.Text;
    11     cls = new ApplicationClass();
    12 
    13     try
    14     {
    15         doc = cls.Documents.Open
    16             (ref path, ref missing, ref missing, ref missing,
    17             ref missing, ref missing, ref missing, ref missing,
    18             ref missing, ref missing, ref missing, ref missing,
    19             ref missing, ref missing,ref missing,ref missing);
    20         table = doc.Tables[1];
    21         string text = table.Cell(rowIndex,colIndex).Range.Text.ToString();
    22         text=text.Substring(0, text.Length - 2);    //去除尾部的mark
    23         textContent.Text = text;
    24         //textContent.Text =    
    25         MessageBox.Show("Congradulations");
    26     }
    27     catch (Exception ex)
    28     {
    29         MessageBox.Show(ex.Message);
    30     }
    31     finally
    32     {
    33         if (doc != null)
    34             doc.Close(ref missing, ref missing, ref missing);
    35         cls.Quit(ref missing, ref missing, ref missing);
    36     }
    37 }

    代码比较简单,相信大家都能看明白。

  • 相关阅读:
    刷题--两个链表生成相加链表
    机器学习与模式识别之——组合模型
    阅读笔记--CSI fingerprinting with SVM regression to achieve device-free passive localization
    复制含有随机指针节点的链表
    将数组排列成左边小,中间相等,右边大的形式 给定链表节点数组和某个值
    EDA(Experimental Data Analysis)之常见分析方法总结--以kaggle的泰坦尼克号之灾为例
    Data Analysis with Python : Exercise- Titantic Survivor Analysis | packtpub.com
    ubuntu16.04配置搜狗输入法
    用栈来求解hanoi塔问题
    codeforces 792 B. Counting-out Rhyme 约瑟夫环
  • 原文地址:https://www.cnblogs.com/iPeterRex/p/1312070.html
Copyright © 2011-2022 走看看