最近在做一个项目其中有一个技术性的难题提取Word指定表格中的指定单元格的数据对于像我这样一个仅仅对于C#语法略有了解的学生来说确实让我感到有些力不从心这真是一个非常非常大的挑战
登录google我检索了相当多的文章从多的多行的代码到少的不到行的代码这些提取数据的方法基本上就那么几种这些人放在博客上基本上都是你copy我的我copy你的现在的有些作者很不负责拿来一段代码就放上去了通览这些代码你会发现有些地方居然用到了作者自定义的类然而作者却没有提供给你这些类的实现方法这样的作者很是气人!还有些作者在自己的博客上狂贴了几百行的代码外加一个标题就完了代码是什么意思程序整个的实现流程是什么样子的说都不说这些代码很多谁都懒得去看精辟的文章很少我百里挑一经过几个星期的查找和筛选终于整理出来一套可行的方案本文通过一个简单的例子来揭示如何从Word的表格提取指定单元格数据的方法
准备工作
新建Word文档docdoc绘制表格并且在表格中插入数据如下表
界面设计及程序运行过程界面截图
说明通过打开按钮打开文件(将文件路径显示在TextBox控件中)
方法步骤
在引用处引用MicrosoftOfficeInteropWord
使用命名空间MicrosoftOfficeInteropWord和SystemReflection
编写打开按钮代码和读取Word表格按钮事件代码
因为主要部分在读取Word表格按钮事件代码因此以下将分享最重要最核心的代码
private void ReadTable_Click(object sender EventArgs e)
{
ApplicationClass cls = null;
Document doc = null;
Table table = null;
object missing = MissingValue;
int rowIndex = colIndex = ;
object path = fileNameText;
cls = new ApplicationClass();
try
{
doc = clsDocumentsOpen
(ref path ref missing ref missing ref missing
ref missing ref missing ref missing ref missing
ref missing ref missing ref missing ref missing
ref missing ref missingref missingref missing);
table = docTables[];
string text = tableCell(rowIndexcolIndex)RangeTextToString();
text=textSubstring( textLength ); //去除尾部的mark
textContentText = text;
//textContentText =
MessageBoxShow(Congradulations);
}
catch (Exception ex)
{
MessageBoxShow(exMessage);
}
finally
{
if (doc != null)
docClose(ref missing ref missing ref missing);
clsQuit(ref missing ref missing ref missing);
}
}