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