根据word模板导出数据(Aspose.Words)

来源:互联网 发布:公安局网络监察科 编辑:程序博客网 时间:2024/05/09 12:48
            //实现代码:
            string tmppath = Server.MapPath("/xlsTemplate/" + path);//模版中书签名须和数据库字段名一致
            Aspose.Words.Document doc = new Aspose.Words.Document(tmppath); //载入模板
            DocumentBuilder builder = new DocumentBuilder(doc);
            DataTable products = table; //数据源
            int count = 0;
            //记录要显示多少列
            for (var i = 0; i < products.Columns.Count; i++)
            {
                if (doc.Range.Bookmarks[products.Columns[i].ColumnName.Trim()] != null)
                {
                    Aspose.Words.Bookmark mark = doc.Range.Bookmarks[products.Columns[i].ColumnName.Trim()];
                    //mark.Text = "";
                    count++;
                }
            }
            System.Collections.Generic.List<string> listcolumn = new System.Collections.Generic.List<string>(count);
            for (var i = 0; i < count; i++)
            {
                builder.MoveToCell(0, 0, i, 0); //移动单元格
                if (builder.CurrentNode.NodeType == NodeType.BookmarkStart)
                {
                    listcolumn.Add((builder.CurrentNode as BookmarkStart).Name);
                }
            }
            double width = builder.CellFormat.Width;//获取单元格宽度
            builder.MoveToBookmark("table"); //开始添加值(模版中添加“table”书签,标志插入数据的开始位置)
            for (var m = 0; m < products.Rows.Count; m++)
            {
                for (var i = 0; i < listcolumn.Count; i++)
                {
                    builder.InsertCell(); // 添加一个单元格
                    builder.CellFormat.Borders.LineStyle = LineStyle.Single;
                    builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
                    builder.CellFormat.Width = width;
                    builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
                    builder.Write(products.Rows[m][listcolumn[i]].ToString());
                }
                builder.EndRow();
            }
            doc.Range.Bookmarks["table"].Text = ""; //操作完成后清掉“table”标示
            doc.Save("数据.doc", SaveFormat.Doc, SaveType.OpenInWord, Page.Response);
原创粉丝点击