1. 程式人生 > >c# 用Aspose.word讀寫word表格中某個單元格的用法

c# 用Aspose.word讀寫word表格中某個單元格的用法

一、Aspose.word改寫word表格中某個單元格的值

用Aspose.word來讀寫word文件方便快捷,比c#自帶的讀寫word文件的類庫好用很多,網上很多都是迴圈給單元格賦值,這裡我給出改寫或直接給某個單元格賦值的方法:

1、引用(Aspose.Words.dll要用破解版的,網上有的下載)

using Aspose.Words;
using Aspose.Words.Tables;

(ps:突然想起來,有的時候即使添加了引用Aspose.Words.dll,也添加了using引用,但是執行時他依舊會報錯,說缺少using引用,出現這個問題的時候右鍵專案的屬性,將目標框架改為 .NET Frameword4 問題就解決了)

2、獲取到word中的表格:

                    //開啟word文件,fileName是路徑地址,需要副檔名
                    Aspose.Words.Document doc = new Document(fileName);
                    //獲取word文件中的第一個表格
                    var table0 = doc.GetChildNodes(NodeType.Table, true)[0] as Aspose.Words.Tables.Table;
3、給某個單元格賦值
                        //獲取table中的某個單元格,從0開始
                        Cell lshCell = table0.Rows[13].Cells[1];
                        //將單元格中的第一個段落移除
                        lshCell.FirstParagraph.Remove();
                        //新建一個段落
                        Paragraph p = new Paragraph(doc);
                        //設定一個string的值
                        string value = "新建一個string的值";
                        //把設定的值賦給之前新建的段落
                        p.AppendChild(new Run(doc, value));
                        //將此段落加到單元格內
                        lshCell.AppendChild(p);


4、儲存word文件
                                          doc.Save(fileName);//fieName為檔案儲存路徑地址,需要副檔名
從上程式碼中可以看到,改寫某個單元格的值的時候,和c#自帶類庫的用法不同,不能直接改寫,要先獲取單元格內的段落,移除後再用段落進行賦值。

二、Aspose.word讀取word表格中某個單元格的值

之前在網上一直沒看到有什麼合適的Aspose.word讀取word表格中某個單元格內的值的方法,不知道是我沒找到還是網上真的很少,總之我在這裡給出一個方法,如下:

1、同樣要先開啟word文件並獲取表格

                    //開啟word文件,fileName是路徑地址,需要副檔名
                    Aspose.Words.Document doc = new Document(fileName);
                    //獲取word文件中的第一個表格
                    var table0 = doc.GetChildNodes(NodeType.Table, true)[0] as Aspose.Words.Tables.Table;

2、獲取具體的某個單元格並獲取其中的值
                    Cell cell = table0.Rows[3].Cells[1];
              //用GetText()的方法來獲取cell中的值
             string cbfbm = cell.GetText();
                    cbfbm = cbfbm.Replace("\a", "");
                    cbfbm = cbfbm.Replace("\r", "");

其中,我有用到一個Replace()方法,這是因為在除錯的時候我發現讀取出單元格內的資料時經常在末尾會出現'\a'或者'\r'又或者'\t'的情況,使用了Trim()函式好像也沒什麼用,所以乾脆用Replace()直接把'\a''\r''\t'都替換成空,這樣就可以除去末尾的某些不必要的字元了。