最近在做一个项目,其中有一个技术性的难题:“提取Word指定表格中的指定C#单元格数据”。对于像我这样一个仅仅对于C#语法略有了解的学生来说确实让我感到有些力不从心,这真是一个非常非常大的挑战。
登录google,我检索了相当多的文章,从多的500多行的代码到少的不到100行的代码。这些提取数据的方法基本上就那么几种,这些人放在博客上基本上都是你copy我的,我copy你的。现在的有些作者很不负责,拿来一段代码就放上去了。通览这些代码,你会发现有些地方居然用到了作者自定义的类;然而,作者却没有提供给你这些类的实现方法。这样的作者很是气人!还有些作者,在自己的博客上狂贴了几百行的代码,外加一个标题就完了。代码是什么意思,程序整个的实现流程是什么样子的,说都不说。这些代码很多,谁都懒得去看。精辟的文章很少,我百里挑一,经过几个星期的查找和筛选,终于整理出来一套可行的方案。本文通过一个简单的例子,来揭示如何从Word的表格提取指定C#单元格数据的方法。
准备工作:
新建Word文档doc1.doc。绘制表格,并且在表格中插入数据,如下表:
界面设计及程序运行过程界面截图:
说明:通过打开按钮打开文件(将文件路径显示在TextBox控件中)
方法步骤:
1.在引用处引用Microsoft.Office.Interop.Word;
2.使用命名空间Microsoft.Office.Interop.Word和System.Reflection;
3.编写打开按钮代码和读取Word表格按钮事件代码。
因为主要部分在读取Word表格按钮事件代码,因此以下将分享最重要最核心的代码
- privatevoidReadTable_Click(objectsender,EventArgse)
- {
- ApplicationClasscls=null;
- Documentdoc=null;
- Tabletable=null;
- objectmissing=Missing.Value;
- introwIndex=2,colIndex=1;
- objectpath=fileName.Text;
- cls=newApplicationClass();
- try
- {
- doc=cls.Documents.Open
- (refpath,refmissing,refmissing,refmissing,
- refmissing,refmissing,refmissing,refmissing,
- refmissing,refmissing,refmissing,refmissing,
- refmissing,refmissing,refmissing,refmissing);
- table=doc.Tables[1];
- stringtext=table.Cell(rowIndex,colIndex).Range.Text.ToString();
- texttext=text.Substring(0,text.Length-2);//去除尾部的mark
- texttextContent.Text=text;
- //textContent.Text=
- MessageBox.Show("Congradulations");
- }
- catch(Exceptionex)
- {
- MessageBox.Show(ex.Message);
- }
- finally
- {
- if(doc!=null)
- doc.Close(refmissing,refmissing,refmissing);
- cls.Quit(refmissing,refmissing,refmissing);
- }
- }
以上介绍C#单元格数据
【编辑推荐】