winform 替换word文档中的字段(包含图片添加),生成导出PDF文件(也可是word文件)
程序员文章站
2023-10-28 19:57:04
1.先打开你需要替换的word文档,在想要后续更换字段值的地方添加“书签”。 2.将模板文档存放在 程序的Debug文件下。 3.生成文件的按钮点击事件 代码: 注:需要引用 Aspose.Words.dll ......
1.先打开你需要替换的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
上一篇: 鸡腿还能这样做吃,两碗饭都不够
下一篇: 你为什么迟到?