国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

C#實現(xiàn)Word中表格信息讀取

2024-07-21 02:28:45
字體:
來源:轉載
供稿:網(wǎng)友

很多時候,會有很多信息存放在word文檔中。而我們需要把這些信息提取出來,另做它用。而word的格式是ms的機密,不知道有沒有nb人可以對其做字符流的分析,反正我是沒這能力也沒這打算。所以就只能用ms提供的組件來進行編程。但ms沒有提供托管的類庫,而是提供了對com組件的pia轉換。具體添加,使用和相關知識,可以參見kaneboy's blog中的http://blog.joycode.com/kaneboy/articles/67688.aspx。高手的講解,很是清晰。
而我想做的是對word文檔中的表信息進行提取。網(wǎng)上很難找到相關的代碼(打開一個已有文檔,對其內容進行分析),但我覺得這種工作是很有意義的。寫了一段小的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實現(xiàn)打開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:這些工作是幫我老媽做的。她們資料室想把資料目錄信息存入數(shù)據(jù)庫,然后建立網(wǎng)站方便檢索和管理。這些目錄信息原先是存放在word文檔中的。這是她們第一次數(shù)字化的結果,那一次她們把一大堆紙質資料變成了word文檔。在她們的當時理解中,數(shù)字化就是按照原來的東西,連格式都不變的變成word文檔就好。現(xiàn)在他們對這些難于維護,難于檢索的東西終于失去了耐性,開始考慮數(shù)據(jù)庫和網(wǎng)絡了。也許數(shù)字化也是一個思維逐步轉變的過程。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 镶黄旗| 鹤山市| 吐鲁番市| 城固县| 县级市| 济阳县| 甘孜| 济南市| 蓬溪县| 唐山市| 阿坝| 项城市| 宣城市| 元氏县| 湖南省| 乌审旗| 深州市| 凤冈县| 樟树市| 万山特区| 三都| 东丽区| 杭锦后旗| 新乡县| 洛南县| 南郑县| 宜宾县| 南部县| 盘锦市| 泽普县| 南宫市| 中西区| 东宁县| 小金县| 乳山市| 潼关县| 乌兰浩特市| 怀化市| 桃江县| 连城县| 土默特左旗|