利用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" 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