Web Analytics

MiniWord

⭐ 704 stars Vietnamese by mini-software

NuGet GitHub stars version Ask DeepWiki


version version version version version version version version version version version version version version version version version


Việc bạn Starủng hộ sẽ giúp MiniWord phát triển tốt hơn


Giới thiệu

MiniWord là một thư viện mẫu Word .NET dễ sử dụng và hiệu quả.

image

Bắt đầu

Cài đặt

Khởi động nhanh

Mẫu theo thiết kế "Bạn thấy gì là bạn nhận được", và các kiểu thẻ mẫu được giữ nguyên hoàn toàn.

var value = new Dictionary(){["title"] = "Hello MiniWord"};
MiniSoftware.MiniWord.SaveAsByTemplate(outputPath, templatePath, value);
image

Đầu vào, Đầu ra

SaveAsByTemplate(string path, string templatePath, Dictionary value)
SaveAsByTemplate(string path, byte[] templateBytes, Dictionary value)
SaveAsByTemplate(this Stream stream, string templatePath, Dictionary value)
SaveAsByTemplate(this Stream stream, byte[] templateBytes, Dictionary value)

Thẻ

Chuỗi định dạng mẫu MiniWord giống như Vue, React {{tag}}, người dùng chỉ cần đảm bảo thẻ và khóa tham số giá trị giống nhau thì hệ thống sẽ tự động thay thế.

Văn bản

{{tag}}
##### Ví dụ

var value = new Dictionary()
{
    ["Name"] = "Jack",
    ["Department"] = "IT Department",
    ["Purpose"] = "Shanghai site needs a new system to control HR system.",
    ["StartDate"] = DateTime.Parse("2022-09-07 08:30:00"),
    ["EndDate"] = DateTime.Parse("2022-09-15 15:30:00"),
    ["Approved"] = true,
    ["Total_Amount"] = 123456,
};
MiniWord.SaveAsByTemplate(path, templatePath, value);
##### Mẫu

image

##### Kết quả

image

Hình ảnh

Kiểu giá trị là MiniWordPicture

##### Ví dụ

var value = new Dictionary()
{
    ["Logo"] = new MiniWordPicture() { Path= PathHelper.GetFile("DemoLogo.png"), Width= 180, Height= 180 }
};
MiniWord.SaveAsByTemplate(path, templatePath, value);
##### Mẫu

image

##### Kết quả

image

Danh sách

giá trị tag có kiểu string[] hoặc IList

##### Ví dụ

var value = new Dictionary()
{
    ["managers"] = new[] { "Jack" ,"Alan"},
    ["employees"] = new[] { "Mike" ,"Henry"},
};
MiniWord.SaveAsByTemplate(path, templatePath, value);
Mẫu

image

##### Kết quả

image

Bảng

Giá trị thẻ là kiểu IEmerable>

##### Ví dụ

var value = new Dictionary()
{
    ["TripHs"] = new List>
    {
        new Dictionary
        {
            { "sDate",DateTime.Parse("2022-09-08 08:30:00")},
            { "eDate",DateTime.Parse("2022-09-08 15:00:00")},
            { "How","Discussion requirement part1"},
            { "Photo",new MiniWordPicture() { Path = PathHelper.GetFile("DemoExpenseMeeting02.png"), Width = 160, Height = 90 }},
        },
        new Dictionary
        {
            { "sDate",DateTime.Parse("2022-09-09 08:30:00")},
            { "eDate",DateTime.Parse("2022-09-09 17:00:00")},
            { "How","Discussion requirement part2 and development"},
            { "Photo",new MiniWordPicture() { Path = PathHelper.GetFile("DemoExpenseMeeting01.png"), Width = 160, Height = 90 }},
        },
    }
};
MiniWord.SaveAsByTemplate(path, templatePath, value);
##### Mẫu

image

##### Kết quả

image

Danh sách lồng trong danh sách

Giá trị thẻ là kiểu IEnumerable. Việc thêm thẻ {{foreachendforeach}} vào mẫu là bắt buộc.

##### Ví dụ

var value = new Dictionary()
{
    ["TripHs"] = new List>
    {
        new Dictionary
        {
            { "sDate", DateTime.Parse("2022-09-08 08:30:00") },
            { "eDate", DateTime.Parse("2022-09-08 15:00:00") },
            { "How", "Discussion requirement part1" },
            {
                "Details", new List()
                {
                    new MiniWordForeach()
                    {
                        Value = new Dictionary()
                        {
                            {"Text", "Air"},
                            {"Value", "Airplane"}
                        },
                        Separator = " | "
                    },
                    new MiniWordForeach()
                    {
                        Value = new Dictionary()
                        {
                            {"Text", "Parking"},
                            {"Value", "Car"}
                        },
                        Separator = " / "
                    }
                }
            }
        }
    }
};
MiniWord.SaveAsByTemplate(path, templatePath, value);
##### Mẫu

before_foreach

Screenshot 2023-08-08 at 17 59 37

##### Kết quả

after_foreach

Screenshot 2023-08-08 at 18 00 15

Câu lệnh If trong mẫu

Đối với nhiều đoạn, sử dụng thẻ @if và @endif. Đối với một đoạn và bên trong foreach, sử dụng thẻ {{ifendif}} để mẫu là bắt buộc.

##### Ví dụ

var value = new Dictionary()
{
    ["Name"] = new List(){
        new MiniWordHyperLink(){
            Url = "https://google.com",
            Text = "測試連結22!!"
        },
        new MiniWordHyperLink(){
            Url = "https://google1.com",
            Text = "測試連結11!!"
        }
    },
    ["Company_Name"] = "MiniSofteware",
    ["CreateDate"] = new DateTime(2021, 01, 01),
    ["VIP"] = true,
    ["Points"] = 123,
    ["APP"] = "Demo APP",
};
MiniWord.SaveAsByTemplate(path, templatePath, value);
##### Mẫu Cho Đoạn Văn Nhiều Dòng

before_if

##### Kết Quả Đoạn Văn Nhiều Dòng

after_if

##### Mẫu Cho Đoạn Văn Một Dòng

Screenshot 2023-08-08 at 17 55 46

##### Kết Quả Đoạn Văn Một Dòng

Screenshot 2023-08-08 at 17 56 47

ColorText

##### Ví dụ

var value = new
{
    Company_Name = new MiniWordColorText { Text = "MiniSofteware", FontColor = "#eb70AB", },
    Name = new[] {
        new MiniWordColorText { Text = "Ja", HighlightColor = "#eb70AB" },
        new MiniWordColorText { Text = "ck", HighlightColor = "#a56abe" }
    },
    CreateDate = new MiniWordColorText
    {
        Text = new DateTime(2021, 01, 01).ToString(),
        HighlightColor = "#eb70AB",
        FontColor = "#ffffff",
    },
    VIP = true,
    Points = 123,
    APP = "Demo APP",
};
MiniWord.SaveAsByTemplate(path, templatePath, value);

Khác

Tham số POCO hoặc động

v0.5.0 hỗ trợ tham số POCO hoặc động

var value = new { title = "Hello MiniWord" };
MiniWord.SaveAsByTemplate(outputPath, templatePath, value);

FontColor và HighlightColor

var value = new
{
    Company_Name = new MiniWordColorText { Text = "MiniSofteware", FontColor = "#eb70AB" },
    Name = new MiniWordColorText { Text = "Jack", HighlightColor = "#eb70AB" },
    CreateDate = new MiniWordColorText { Text = new DateTime(2021, 01, 01).ToString(), HighlightColor = "#eb70AB", FontColor = "#ffffff" },
    VIP = true,
    Points = 123,
    APP = "Demo APP",
};

Siêu liên kết

Nếu kiểu giá trị là MiniWordHyperLink, hệ thống sẽ thay thế chuỗi mẫu bằng siêu liên kết.

var value = new
{
    ["Name"] = new MiniWordHyperLink(){
        Url = "https://google.com",
        Text = "Test Link!!"
    },
    ["Company_Name"] = "MiniSofteware",
    ["CreateDate"] = new DateTime(2021, 01, 01),
    ["VIP"] = true,
    ["Points"] = 123,
    ["APP"] = "Demo APP",
};
MiniWord.SaveAsByTemplate(path, templatePath, value);

Ví dụ

#### Xuất API ASP.NET Core 3.1

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using MiniSoftware;

public class Program { public static void Main(string[] args) => CreateHostBuilder(args).Build().Run();

public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartup()); }

public class Startup { public void ConfigureServices(IServiceCollection services) => services.AddMvc(); public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseStaticFiles(); app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=api}/{action=Index}/{id?}"); }); } }

public class ApiController : Controller { public IActionResult Index() { return new ContentResult { ContentType = "text/html", StatusCode = (int)HttpStatusCode.OK, Content = @" DownloadWordFromTemplatePath
DownloadWordFromTemplateBytes
" }; }

static Dictionary defaultValue = new Dictionary() { ["title"] = "FooCompany", ["managers"] = new List> { new Dictionary{{"name","Jack"},{ "department", "HR" } }, new Dictionary {{ "name", "Loan"},{ "department", "IT" } } }, ["employees"] = new List> { new Dictionary{{ "name", "Wade" },{ "department", "HR" } }, new Dictionary {{ "name", "Felix" },{ "department", "HR" } }, new Dictionary{{ "name", "Eric" },{ "department", "IT" } }, new Dictionary {{ "name", "Keaton" },{ "department", "IT" } } } };

public IActionResult DownloadWordFromTemplatePath() { string templatePath = "TestTemplateComplex.docx";

Dictionary value = defaultValue;

MemoryStream memoryStream = new MemoryStream(); MiniWord.SaveAsByTemplate(memoryStream, templatePath, value); memoryStream.Seek(0, SeekOrigin.Begin); return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.wordprocessingml.document") { FileDownloadName = "demo.docx" }; }

private static Dictionary TemplateBytesCache = new Dictionary();

static ApiController() { string templatePath = "TestTemplateComplex.docx"; byte[] bytes = System.IO.File.ReadAllBytes(templatePath); TemplateBytesCache.Add(templatePath, bytes); }

public IActionResult DownloadWordFromTemplateBytes() { byte[] bytes = TemplateBytesCache["TestTemplateComplex.docx"];

Dictionary value = defaultValue;

MemoryStream memoryStream = new MemoryStream(); MiniWord.SaveAsByTemplate(memoryStream, bytes, value); memoryStream.Seek(0, SeekOrigin.Begin); return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.wordprocessingml.document") { FileDownloadName = "demo.docx" }; } }

Hỗ trợ : Liên kết quyên góp

--- Tranlated By Open Ai Tx | Last indexed: 2025-07-17 ---