大连做环评网站,网站开发方式有,大连网站建设个人,凡科网网站怎么设置会员登录板块简介#xff1a;
SharpDocx是一个轻量级的模板引擎#xff0c;用于创建Word文档。它允许开发者基于视图生成Word文档#xff0c;这个视图本身就是一个Word文档#xff0c;可以根据需要设置简单或复杂的布局。
以下是一些主要特点#xff1a;
模板引擎类似Razor#xf…简介
SharpDocx是一个轻量级的模板引擎用于创建Word文档。它允许开发者基于视图生成Word文档这个视图本身就是一个Word文档可以根据需要设置简单或复杂的布局。
以下是一些主要特点
模板引擎类似Razor可以使用类似于Razor的语法在Word模板中插入C#代码。支持MVC模式支持模型-视图-控制器MVC设计模式可以在模板中使用自己的C#模型。视图中嵌入C#代码在视图中可以插入C#代码来动态生成文本、图片或表格等内容。易于使用生成文档的过程分为两步首先是在Word中创建一个包含C#代码的视图然后基于这个视图创建文档。功能强大除了基本的文本插入功能SharpDocx还支持更复杂的操作如循环和条件语句以适应不同的文档生成需求。
gitHub地址
GitHub - egonl/SharpDocx: Lightweight template engine for creating Word documents
演示
在c#项目中使用SharpDocx可以选择直接安装SharpDocx的NuGet包
NuGet\Install-Package SharpDocx -Version 2.4.0
因为这里创建word的数据是从pgsql中获取的因此还需安装Dapper和Npgsql的Nuget包用于从数据库中获取数据。 我们在数据中创建一个表 创建一条测试数据其中photo的URL是在网上随便找的一个图片的链接 然后我们在项目中创建与之对应的实体类
public class WordData
{public string? Title { get; set;}public string? Name { get; set; }public string? Sex { get; set; }public string? Mail { get; set; }public string? Phone { get; set; }public string? Photo { get; set; }
}
新建一个word作为我们导出word的视图模板在模板中我们可以通过Model.字段名来获取实体类中字段的值。并且还可以包含 C# 代码。例如 % DateTime.Now % 就是插入当前日期和时间。如下图案例中我通过一个for循环遍历两次我的图片稍后导出文件中我的图片就将会显示两个。 试图模板准备好之后我们就可以来写代码了我们通过Dapepr获取数据库中的worddata表数据然后通过方法Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 获取当前项目的路径在后面的代码中我们读取当前项目路径下的模板.docx即刚刚创建的视图模板文件名可以自定义然后我们将导出的word也保存到当前路径下命名为结果.docx
namespace MyNamespace
{class MyClass{public static void Main(string[] args){string connectionString Hostlocalhost;Databasestudy;Usernamepostgres;Password1qazZAQ!;using (var connection new NpgsqlConnection(connectionString)){connection.Open();string sql SELECT * FROM worddata Limit 1;var model connection.QueryWordData(sql).FirstOrDefault();model.Title 个人资料;var directoryName Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);var document DocumentFactory.Create(Path.Combine(directoryName, 模板.docx), model);document.Generate(Path.Combine(directoryName, 结果.docx));connection.Close();}}}
} 运行项目出现类似下面输出即表示word创建成功 找到创建的结果.docx打开如下