如何从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 }

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

原文地址:https://www.cnblogs.com/iPeterRex/p/1312070.html