All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
C#教程:C#中的变量
ASP.NET技巧:使用Gridview绑定数据库中的图片_[Asp.Net教程]
基于.NET数字处理程序的框架设计_.net资料_编程技术
asp.net显示下载提示的下载网页程序_[Asp.Net教程]
在ASP.NET中把图片保存到SQL,SERVER数据库(vb.net)_[Asp.Net教程]
正确理解PHP程序编译时的错误信息_php资料_编程技术
基于Gettext的asp.net网站多语言解决方案_.net资料_编程技术
PHP自带可以代替echo调试的unit函数_[PHP教程]
网页设计中HTML常犯的五个错误_[Html教程]
ASP.NET从零起步设计网站全过程(5)_[Asp.Net教程]
Reading number is top 10 pictures
Fierce! China's special forces training the devil1
毕姥爷事件,告诉你6条真理
关于海盗的研究
青春清纯美女大集合2
中国女孩大胆自拍,显露完美身材3
Female model behind the bitterness, often being overcharged4
刘亦菲写真集1
A man's favorite things8
The little woman's bright wire3
India's national beauty of the college students
Download software ranking
网页特效实例大全
Tram sex maniac 2 (H) rar bag16
WebService在.NET中的实战应用教学视频 → 第1集
少妇苏霞全本
Boxer's Top ten classic battle10
I'm come from Beijing1
传奇私服架设教程
Boxer's Top ten classic battle9
Call Of Duty5
Boxer Classic video3
delv published in(发表于) 2014/1/10 6:29:14 Edit(编辑)
C#实现Word中表格信息读取_[Asp.Net教程]

C#实现Word中表格信息读取_[Asp.Net教程]

C#实现Word中表格信息读取_[Asp.Net教程]

很多时候,会有很多信息存放在Word文档中。而我们需要把这些信息提取出来,另做它用。而Word的格式是ms的机密,不知道有没有NB人可以对其做字符流的分析,反正我是没这能力也没这打算。所以就只能用ms提供的组件来进行编程。但ms没有提供托管的类库,而是提供了对com组件的PIA转换。具体添加,使用和相关知识,可以参见kaneboy's blog中的http://blog.joycode.com/kaneboy/articles/67688.aspx。高手的讲解,很是清晰。
而我想做的是对word文档中的表信息进行提取。网上很难找到相关的代码(打开一个已有文档,对其内容进行分析),但我觉得这种工作是很有意义的。写了一段小的Demo,如下:


object oFileName = @"C:\Documents and Settings\liush\My Documents\TestDoc.doc";
object oReadOnly = true;
object oMissing = System.Reflection.Missing.Value;


Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;//只是为了方便观察
oDoc = oWord.Documents.Open(ref oFileName, ref oMissing, ref oReadOnly, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);


//MessageBox.Show(oDoc.Tables.Count.ToString());
for (int tablePos = 1; tablePos <= oDoc.Tables.Count; tablePos++)
{
Word.Table nowTable = oDoc.Tables.Item(tablePos);
string tableMessage = string.Format("第{0}/{1}个表:\n", tablePos, oDoc.Tables.Count);


for (int rowPos = 1; rowPos <= nowTable.Rows.Count; rowPos++)
{
for (int columPos = 1; columPos <= nowTable.Columns.Count; columPos++)
{
tableMessage += nowTable.Cell(rowPos, columPos).Range.Text;
tableMessage = tableMessage.Remove(tableMessage.Length - 2, 2);//remove \r\a
tableMessage += "\t";
}


tableMessage += "\n";
}


MessageBox.Show(tableMessage);
}


如果看过了上面kaneboy的文章(这是一个系列的之一),再看这段代码应该不会很难理解。打开一个已有文档,然后遍历其中的所有的表。这里只是简单的将信息显示出来,具体实践上可以对这些信息进行分析。做完这些后,终于找到了一些官方的支持文档,地址如下:
http://msdn2.microsoft.com/zh-CN/library/y1xatbkd.aspx
其中的word任务有对word各种操作的简单代码事例,用vb和c#写的。看完之后,我想每个人都会明白vb对com的支持比c#不是简单明了一点两点。(可以看下这个http://blog.joycode.com/kaneboy/archive/2005/08/03/61489.aspx)同样的代码,用vb实现打开word文档的操作,代码如下:


Dim fileName As String = "C:\Documents and Settings\liush\My Documents\TestDoc.doc"
Dim isReadOnly As Boolean = True


Dim wordApplication As Word.Application = New Word.Application()
Dim wordDocument As Word.Document
wordApplication.Visible = True
wordDocument = wordApplication.Documents.Open(fileName, , isReadOnly)


所以,下次我要做COM操作的时候,我还会回归我可爱的VB的。但是,用了太久的C#毛病越来越多了,动不动就习惯性加括号,加分号。。。


PS:这些工作是帮我老妈做的。她们资料室想把资料目录信息存入数据库,然后建立网站方便检索和管理。这些目录信息原先是存放在Word文档中的。这是她们第一次数字化的结果,那一次她们把一大堆纸质资料变成了word文档。在她们的当时理解中,数字化就是按照原来的东西,连格式都不变的变成Word文档就好。现在他们对这些难于维护,难于检索的东西终于失去了耐性,开始考虑数据库和网络了。也许数字化也是一个思维逐步转变的过程。


来源:网络







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.