欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

winform 替换word文档中的字段(包含图片添加),生成导出PDF文件(也可是word文件)

程序员文章站 2023-10-28 19:57:04
1.先打开你需要替换的word文档,在想要后续更换字段值的地方添加“书签”。 2.将模板文档存放在 程序的Debug文件下。 3.生成文件的按钮点击事件 代码: 注:需要引用 Aspose.Words.dll ......

1.先打开你需要替换的word文档,在想要后续更换字段值的地方添加“书签”。

winform  替换word文档中的字段(包含图片添加),生成导出PDF文件(也可是word文件)

 

2.将模板文档存放在 程序的debug文件下。

3.生成文件的按钮点击事件 代码:

   string templatepath = application.startuppath + "\\模板.docx"; //文档模板物理路径

                document doc = new document(templatepath);
                try
                {
                    hashtable tables = new hashtable();
                    tables.add("a型", aj);
                    tables.add("a价", af);
                    tables.add("b型", bj);
                    tables.add("b价", bf);
                    tables.add("f型", fj);
                    tables.add("f价", ff);

//图片添加 //aspose.words.documentbuilder builder1 = new aspose.words.documentbuilder(doc); //// response.contenttype = picturebox1.imagelocation;//设定输出文件类型 //builder1.movetobookmark("图片审核者"); //builder1.insertimage((byte[])getpicturedata(picturebox1.imagelocation), 60, 30); tables.add("日期", dtpbaogao.value.tostring("yyyy年mm月dd日")); tables.add("日期2", dtpjieshou.value.tostring("yyyy.mm.dd")); gethtfile(doc, tables); string downname = txtname.text + "----报告.pdf"; // doc.save(downname, saveformat.pdf); savefiledialog savedata = new savefiledialog(); //以保存文件的方式打开 savedata.restoredirectory = true; //打开上传存放时的目录 savedata.title = "请选择路径"; //标题 //savedata.initialdirectory = @"c:\"; //默认路径是c:\,可更改 savedata.filter = "pdf文件(*.pdf)|*.pdf"; //只能保存为sql文件(可根据需求更改) string script = " "; savedata.filename = txtname.text + "----报告"; if (savedata.showdialog() == dialogresult.ok) //如果选定路径按下保存按钮 { script = savedata.filename; //script赋值为选择保存的路径 doc.save(script, saveformat.pdf); //生成word文件,就将 saveformat.pdf改成.word messagebox.show("生成成功!");

this.close(); } } catch (exception ex) { }

}
public byte[] getpicturedata(string imagepath)
{
/**/////根据图片文件的路径使用文件流打开,并保存为byte[] 
filestream fs = new filestream(imagepath, filemode.open);//可以是其他重载方法 
byte[] bydata = new byte[fs.length];
fs.read(bydata, 0, bydata.length);
fs.close();
return bydata;
}
public static void gethtfile(document doc, hashtable table)
{
bookmarkcollection bookmarks = doc.range.bookmarks;
foreach (bookmark mark in bookmarks)
{
if (table.containskey(mark.name))
{
mark.text = table[mark.name].tostring();
}
}
}

注:需要引用 aspose.words.dll