MVC3导出Word文档

利用aspose在线导出word文档

开发工具:vs2010+mvc3

 

源代码下载地址如下:

http://download.csdn.net/detail/idays021/7811243

 

 

word1方法word模板样式:

 

word2方法word模板样式:

 

word3方法word模板样式:

 

Controllers

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Aspose.Words;
using Aspose.Words.Tables;
using System.Data;
using Aspose.Words.Drawing;

namespace MvcApplication1.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/

        public ActionResult Index()
        {
            ViewBag.msg = "点击下面链接进行生成";
            return View();
        }

        /// <summary>
        /// 生成普通表格列表
        /// </summary>
        public ActionResult word1()
        {
            try
            {
                string templateFile = Server.MapPath("~/test.docx");
                string saveDocFile = Server.MapPath("~/生成普通表格列表" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".doc");


                Aspose.Words.Document doc = new Aspose.Words.Document(templateFile);
                Aspose.Words.DocumentBuilder builder = new Aspose.Words.DocumentBuilder(doc);

                DataTable nameList = new DataTable();

                DataColumn dc = new DataColumn("编号", typeof(string));
                nameList.Columns.Add(dc);

                dc = new DataColumn("姓名", typeof(string));
                nameList.Columns.Add(dc);
                dc = new DataColumn("时间", typeof(string));
                nameList.Columns.Add(dc);


                DataRow row = null;
                for (int i = 0; i < 5; i++)
                {
                    row = nameList.NewRow();
                    row["编号"] = i.ToString().PadLeft(4, '0');
                    row["姓名"] = "张三 " + i.ToString();
                    row["时间"] = DateTime.Now.ToString();
                    nameList.Rows.Add(row);
                }

                List<double> widthList = new List<double>();
                for (int i = 0; i < nameList.Columns.Count; i++)
                {
                    builder.MoveToCell(0, 0, i, 0); //移动单元格
                    double width = builder.CellFormat.Width;//获取单元格宽度
                    widthList.Add(width);
                }

                builder.MoveToBookmark("table");        //开始添加值
                for (var i = 0; i < nameList.Rows.Count; i++)
                {
                    for (var j = 0; j < nameList.Columns.Count; j++)
                    {
                        builder.InsertCell();// 添加一个单元格    
                        #region 样式
                        builder.CellFormat.Borders.LineStyle = LineStyle.Single;
                        builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
                        builder.CellFormat.Width = widthList[j];
                        builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
                        builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center;//垂直居中对齐
                        builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;//水平居中对齐
                        #endregion
                        builder.Write(nameList.Rows[i][j].ToString());
                    }
                    builder.EndRow();
                }
                doc.Range.Bookmarks["table"].Text = "";// 清掉标示  

                doc.Save(saveDocFile);//保存
                ViewBag.msg = "生成成功,保存路径:<br />" + saveDocFile;
                //System.Diagnostics.Process.Start(saveDocFile);//打开文档
                //return File(saveDocFile, "application/msword", DateTime.Now.ToString("yyyyMMddhhmmss") + ".doc");//输出到浏览器
            }
            catch (Exception ex)
            {
                ViewBag.msg = ex.Message;
            }
            return View("Index");
        }

        /// <summary>
        /// 生成带有合并行列的表格列表
        /// </summary>
        public ActionResult word2()
        {
            try
            {
                string templateFile = Server.MapPath("~/test2.docx");
                string saveDocFile = Server.MapPath("~/生成带有合并行列的表格列表" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".doc");

                Aspose.Words.Document doc = new Aspose.Words.Document(templateFile);
                Aspose.Words.DocumentBuilder builder = new Aspose.Words.DocumentBuilder(doc);

                List<double> widthList = new List<double>();
                for (int i = 0; i < 6; i++)
                {
                    builder.MoveToCell(0, 1, i, 0); //移动单元格
                    double width = builder.CellFormat.Width;//获取单元格宽度
                    widthList.Add(width);
                }

                builder.MoveToBookmark("table");        //开始添加值

                Table table = builder.StartTable();
                builder.RowFormat.HeadingFormat = true;
                builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;

                for (int j = 0; j < 12; j++)
                {
                    builder.InsertCell();// 添加一个单元格
                    #region 表格样式
                    builder.CellFormat.Borders.LineStyle = LineStyle.Single;
                    builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
                    int cellIndex = (j > 5) ? (j - 6) : j; //位于第几个单元格
                    builder.CellFormat.Width = widthList[cellIndex];
                    builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center;//垂直居中对齐
                    builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;//水平居中对齐

                    builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;

                    #region 合并单元格
                    switch (j)
                    {
                        case 0:
                            builder.CellFormat.VerticalMerge = CellMerge.First;//垂直合并开始
                            break;
                        case 5:
                            builder.CellFormat.VerticalMerge = CellMerge.First;//垂直合并开始
                            break;
                        case 6:
                            builder.CellFormat.VerticalMerge = CellMerge.Previous;//垂直合并结束
                            break;
                        case 7:
                            builder.CellFormat.HorizontalMerge = CellMerge.First;//水平合并开始
                            break;
                        case 8:
                            builder.CellFormat.HorizontalMerge = CellMerge.None;//水平无合并
                            break;
                        case 10:
                            builder.CellFormat.HorizontalMerge = CellMerge.Previous;//水平合并结束
                            break;
                        case 11:
                            builder.CellFormat.HorizontalMerge = CellMerge.None;//水平无合并
                            builder.CellFormat.VerticalMerge = CellMerge.Previous;//垂直合并结束
                            break;

                    }
                    #endregion
                    #endregion
                    builder.Write("测试" + j.ToString());//单元格填写内容
                    if (cellIndex == 5)
                    {
                        //行结束
                        builder.EndRow();
                    }
                }
                builder.EndTable();//table结束
                doc.Range.Bookmarks["table"].Text = "";//移除标签
                doc.Save(saveDocFile);//保存表格
                ViewBag.msg = "生成成功,保存路径:<br />" + saveDocFile;
                //System.Diagnostics.Process.Start(saveDocFile);//打开
                //return File(saveDocFile, "application/msword", DateTime.Now.ToString("yyyyMMddhhmmss") + ".doc");//输出到浏览器
            }
            catch (Exception ex)
            {
                ViewBag.msg = ex.Message;
            }
            return View("Index");
        }

        /// <summary>
        /// 生成带有合并行列的表格列表
        /// </summary>
        public ActionResult word3()
        {
            try
            {
                string templateFile = Server.MapPath("~/test3.docx");
                string saveDocFile = Server.MapPath("~/生成带图片表单" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".doc");

                Aspose.Words.Document doc = new Aspose.Words.Document(templateFile);

                #region 给普通标签赋值
                Bookmark markDesigner;
                if (doc.Range.Bookmarks["xm"] != null)//查找姓名标签
                {
                    markDesigner = doc.Range.Bookmarks["xm"];
                    markDesigner.Text = "张三";//给性姓赋值
                }
                if (doc.Range.Bookmarks["xb"] != null)
                {
                    markDesigner = doc.Range.Bookmarks["xb"];
                    markDesigner.Text = "男";
                }
                if (doc.Range.Bookmarks["csrq"] != null)
                {
                    markDesigner = doc.Range.Bookmarks["csrq"];
                    markDesigner.Text = "1990-1-1";
                }
                if (doc.Range.Bookmarks["byyx"] != null)
                {
                    markDesigner = doc.Range.Bookmarks["byyx"];
                    markDesigner.Text = "北京大学";
                }
                if (doc.Range.Bookmarks["jg"] != null)
                {
                    markDesigner = doc.Range.Bookmarks["jg"];
                    markDesigner.Text = "北京市大兴区";
                }
                if (doc.Range.Bookmarks["jj"] != null)
                {
                    markDesigner = doc.Range.Bookmarks["jj"];
                    markDesigner.Text = "习惯性一直拖延症";
                }
                #endregion

                #region 添加图片
                Aspose.Words.DocumentBuilder builder = new Aspose.Words.DocumentBuilder(doc);
                builder.MoveToBookmark("img");//给img标签处添加内容
                //builder.InsertCell();// 添加一个单元格 
                Shape shape = new Shape(doc, ShapeType.Image);
                string url = Server.MapPath("~/a.png");
                shape.ImageData.SetImage(url);
                shape.Width = 80;
                shape.Height = 100;
                shape.HorizontalAlignment = HorizontalAlignment.Center;
                //CompositeNode node = shape.ParentNode;
                //把此图片移动到那个单元格中
                builder.MoveToCell(0, 0, 4, 0);//
                builder.InsertNode(shape);
                #endregion
                //doc.Range.Bookmarks["img"].Text = "";//移除标签
                doc.Save(saveDocFile);//保存
                ViewBag.msg = "生成成功,保存路径:<br />" + saveDocFile;
                //System.Diagnostics.Process.Start(saveDocFile);//打开文档
                //return File(saveDocFile, "application/msword", DateTime.Now.ToString("yyyyMMddhhmmss") + ".doc");//输出到浏览器
            }
            catch (Exception ex)
            {
                ViewBag.msg = ex.Message;
            }
            return View("Index");
        }
    }
}

 

Views

<h3 style="color: Red;">当前时间: @DateTime.Now
    <br />
    @Html.Raw(ViewBag.msg)</h3>
<h4>
    <a href="/home/word1">生成普通表格列表</a> | <a href="/home/word2">生成带有合并行列的表格列表</a> | <a
        href="/home/word3">生成带图片表单</a></h4>


 

源代码下载地址如下:

http://download.csdn.net/detail/idays021/7811243

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值