天天看點

MVC3導出Word文檔

利用aspose線上導出word文檔

開發工具:vs2010+mvc3

源代碼下載下傳位址如下:

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

word1方法word模闆樣式:

MVC3導出Word文檔

word2方法word模闆樣式:

MVC3導出Word文檔

word3方法word模闆樣式:

MVC3導出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" target="_blank" rel="external nofollow" >生成普通表格清單</a> | <a href="/home/word2" target="_blank" rel="external nofollow" >生成帶有合并行列的表格清單</a> | <a
        href="/home/word3" target="_blank" rel="external nofollow" >生成帶圖檔表單</a></h4>
           

源代碼下載下傳位址如下:

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