Aspose.word 使用word模板导出数据
找了网上很多教程发现都不太符合我的需要,所以自己写了一个希望对大家有所帮助
winform程序好像不太支持Aspose.word 具体还需要大家去做验证
在此提供一个非常好用的dll反编译工具,无需安装解压即用
dll反编译工具下载
第一步 设置word模板
Word中添加书签的步骤:
1、打开Word,选择要为其指定书签的对象,或单击要插入书签的位置。
2、执行“插入”→“书签”。
3、在随后打开的对话框中,输入“书签名”,也可以在下面的列表中选择一个已有的书签名。
但请注意:书签名必须以字母、汉字、中文标点等开头,可以包含数字但中间不能有空格。
4、单击对话框下方的“添加”按钮,新的书签名将出现在下面的列表中。
另外,请注意:
1、如果新插入位置或新对象采用的是已有的书签名,原有的书签将自动取消。
2、为一项内容指定书签,该书签会以灰色括号 ([…]) 的形式出现(括号仅显示在屏幕上,不会打印出来);如果是为一个位置指定的书签,则该书签会显示为灰色I形标记。
第二步
引用Aspose.word dll 文件
在此提供我使用的Aspose.word.dll
Aspose.dll下载
第三步
写代码
public void word()
{
string templatePath = HttpContext.Current.Server.MapPath(@"~/PrintTemplate人员基础息表模板.doc");
//获取到模板文件
Aspose.Words.Document doc = new Aspose.Words.Document(templatePath);
#region 基础信息
//因为我使用的是oracle数据库
OracleConnection conn1 = new OracleConnection(is_constr);
try
{
DataTable ldt_sql = new DataTable();
OracleDataAdapter loda_sql = new OracleDataAdapter();
string ls_sql = "";
//在这里获得数据
ls_sql = "sele * from data_table ";
loda_sql = new OracleDataAdapter(ls_sql, conn1);
conn1.Open();
loda_sql.Fill(ldt_sql);
loda_sql.Dispose();
conn1.Close();
//循环模板文件书签名
foreach (Aspose.Words.Bookmark mark in doc.Range.Bookmarks)
{
if (mark != null)
{
switch (mark.Name)
{
case "tb_xm":
mark.Text = ldt_sql.Rows[0]["xm"].ToString().Trim();
break;
case "tb_xb":
ls_value =ldt_sql.Rows[0]["xb"].ToString().Trim();
mark.Text = f_get_zdwh_mc(idt_sysdic, "2", ls_value, ref ls_error);
ldt_sql.Rows[0]["xb"].ToString().Trim();
break;
case "tb_nl":
mark.Text = ldt_sql.Rows[0]["nl"].ToString().Trim();
break;
//导出照片
case "Image_photo":
Aspose.Words.DocumentBuilder builder = new Aspose.Words.DocumentBuilder(doc);
byte[] img = new byte[0];
DataRow dr;
dr = ldt_sql.Rows[0];
//由于我的数据库里存储的照片就是字节流,所以我在这里直接转换就行了,
if (!ldt_sql.Rows[0]["imgdata"].ToString().Equals(""))
{
img = (byte[])dr["imgdata"];
}
builder.MoveToBookmark("Image_photo");
builder.InsertImage(img, Aspose.Words.Drawing.RelativeHorizontalPosition.Margin, 1, Aspose.Words.Drawing.RelativeVerticalPosition.Margin, 1, 70, 100, Aspose.Words.Drawing.WrapType.Square);
break;
default:
break;
}
}
}
}
catch (Exception)
{
throw;
}
#endregion
string ls_xm = tb_xm.Text.Trim();
string ls_dwmc = tb_dwmc.Text.Trim();
string ls_xrzw = tb_sfqk.Text.Trim();
//filename是设置导出是文件的名称
string filename = ls_dwmc + "-" + ls_xrzw + "-" + ls_xm;
//导出文件
doc.Save(filename + ".doc", Aspose.Words.SaveFormat.Doc, Aspose.Words.SaveType.OpenInWord, this.Response);
}
希望以上能解决各位的问题