Aspose.Word
Aspose.Words是一个极其强大的Word操作组件,包括.Net和Java两个版本,这里介绍的是.Net版本。
Aspose.Words的详细介绍在其官方网站上有介绍,但比较少有对Word模板的描述。可以在官方网站上下载例子程序,其中包含了不少Word模板。
Aspose.Words主要通过Words里域(Fields)来控制内容,基本方式就是新建一个新Word文件,在菜单中选择插入->域,选择MergeField,属性->域名中输入和数据库表字段相同的名称,然后确定就OK了。多添加几个MergeField就可以输入多个字段。接着是.net中的代码,该代码使用模板为基础,循环数据库表的内容,每条记录在Word中显示为一页。
- private void Page_Load(object sender, EventArgs e)
- {
- DataSet users = appService.GetAllUser();
- Stream f = new FileStream(Server.MapPath("~") + @"\Output\Template\ApplyFormTemplate.doc", FileMode.Open);
- Document doc = new Document(f);
- // 建立图片事件
- doc.MailMerge.MergeImageField+=new Aspose.Words.Reporting.MergeImageFieldEventHandler(MailMerge_MergeImageField);
- // 执行数据更新
- doc.MailMerge.Execute(users.Tables[0]);
- // 删除未使用的空白域
- doc.MailMerge.DeleteFields();
- // 将结果发送到客户端
- doc.Save("ApplyForm.doc", SaveFormat.Doc, SaveType.OpenInWord, Response);
- f.Close();
- }
- private void MailMerge_MergeImageField(object sender, Aspose.Words.Reporting.MergeImageFieldEventArgs e)
- {
- if (e.FieldValue != null && e.FieldValue.ToString() != "")
- {
- PhotoService photoService = new PhotoService();
- string photoPath = photoService.GetPhotoPathById((int)e.FieldValue);
- if (File.Exists(photoPath))
- e.Image = Image.FromFile(photoPath);
- }
- }
上面的代码,可以将数据库中所有用户的资料按模板显示,每个人的详细记录一个页面。
需要特别说明的是上面的代码中包含了照片。使用方法如下:
在需要加模板照片或图片的地方,同样插入域,但域名设置为:Image:数据表字段名,该处的数据表字段可以为String(也就是图片地址),也可以是二进制的图片。然后通过MergeImageField事件,将该处的显示进行修改。如上面代码,e.FieldValue就是数据库里所保存的数据。然后通过一些代码改变,设置e.Image的值为具体图片,那么就完成。
分类:
找问题系列
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述