Aspose.Words對於Word的操作


對於word操作一般是對已有word模板的操作,直接新建的不考慮,網上教程很多,自己看吧
一般有以下幾種辦法(忘了具體幾種了,一般情況下以下就夠了)
1、通過書簽替換
顧名思義,就是先定義一個書簽,然后在書簽的位置填進去相應的數據或圖片,具體操作
1 >先在word上插入->書簽->定義書簽名
2 >在程序中使用

Document doc = new Document(tmppath); //載入模板
Aspose.Words.DocumentBuilder builder = new Aspose.Words.DocumentBuilder(doc);
builder.MoveToBookmark("zy");//跳轉到書簽名是zy的位置
builder.Write("書簽位置要替換的文字");

圖片還有一個根據位置定位到某個位置然后粘貼,實例如下

builder.InsertImage(img, RelativeHorizontalPosition.Page, left, RelativeVerticalPosition.TopMargin, 0, width, height, WrapType.None);

參數具體含義有很明了,就不說了。
2、通過表格單元格替換
一般word模板里邊基本就是表格,所以對表格的操作很重要
先找到相應的表格

Document doc = new Document(tmppath); //載入模板
Aspose.Words.DocumentBuilder builder = new Aspose.Words.DocumentBuilder(doc);
NodeCollection allTables = doc.GetChildNodes(NodeType.Table, true);
Table table = allTables[0] as Aspose.Words.Tables.Table;//拿到第一個表格


然后對表格進行操作,但是默認的表格的單元格是只可讀的,於是我想出一個辦法,就是先取到單元格A存儲到一個新建的單元格對象單元格B里面,然后修改單元格B,最后刪除單元格A並且把單元格B添加到單元格A中,這樣就完美的替換了單元格了,而且原來單元格的寬高都不用在調整了,於是我把它封裝成了一個方法示例如下
                

                /// <summary>
                /// 修改表中的數據
                /// </summary>
                /// <param name="table">表名</param>
                /// <param name="doc">文檔</param>
                /// <param name="row">要修改行</param>
                /// <param name="cell">要修改列</param>
                /// <param name="value">修改后的值</param>
                private static Table EditCell(Table table, Document doc, int row, int cell, string value)
                {
                        Cell c = table.Rows[row].Cells[cell];
                        Paragraph p = new Paragraph(doc);
                        p.AppendChild(new Run(doc, value));

                        p.ParagraphFormat.Style.Font.Size = 10;
                        p.ParagraphFormat.Style.Font.Name = "華文楷體";
                        c.FirstParagraph.Remove();
                        c.AppendChild(p);
                        table.Rows[row].Cells[cell].Remove();
                        table.Rows[row].Cells.Insert(cell, c);
                        return table;
}

3 >就是刪除原來的單元格然后再添加一個新建的單元格,然后自定義屬性(寬高等)
這個不推薦,只是原來沒有想好2方法的替代品,是老版本,但是還是顯示一下吧,紀念自己的努力
方法如下
        

         private static Aspose.Words.Tables.Cell CreateCell(string value, Document doc, double cellwidth)
                {
                        Aspose.Words.Tables.Cell c1 = new Aspose.Words.Tables.Cell(doc);
                        c1.CellFormat.Width = cellwidth;
                        c1.CellFormat.Borders.LineStyle = LineStyle.Single;
                        //c1.CellFormat.WrapText = false;
                        Aspose.Words.Paragraph p = new Paragraph(doc);
                        p.AppendChild(new Run(doc, value));
                        //Table table = new Table(doc);
                        //p.AppendChild(table);
                        p.ParagraphFormat.Style.Font.Size = 10;
                        p.ParagraphFormat.Style.Font.Name = "華文楷體";
                        c1.AppendChild(p);
                        return c1;

                }

 


4 >添加數據到單元格,只適用於表格,很是推薦,很好用,具體就是直接向某個表格的某一行的某一列添加值,示例如下:

builder.MoveToCell(0, 31, 1, 0);//先跳轉到第0個表格,第31行,第1列
builder.Write("要寫入的數據");

注意:行和列都是從0開始的,不是從1開始的
5 >通過替換域名的方法
和書簽的方法相似,但是。。。。我不會,自己百度吧。。。哈哈哈哈哈

其他:我還准備做一個小例子,過會傳上來


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM