1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dotnetchina-MiniWord

Клонировать/Скачать
README.zh-Hant.md 8.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 23:05 615608b

Введение

MiniWord — это .NET Word шаблонный движок, который позволяет легко и быстро создавать файлы на основе шаблонов и данных.

Начало работы

Установка

Быстрый старт

Шаблоны следуют принципу «что видишь, то и получаешь», сохраняя стиль шаблонов и меток.

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

Ввод и вывод

  • Ввод поддерживает путь к шаблону или Byte[].
  • Вывод поддерживает путь к файлу, Byte[] или Stream.
SaveAsByTemplate(string path, string templatePath, Dictionary<string, object> value)
SaveAsByTemplate(string path, byte[] templateBytes, Dictionary<string, object> value)
SaveAsByTemplate(this Stream stream, string templatePath, Dictionary<string, object> value)
SaveAsByTemplate(this Stream stream, byte[] templateBytes, Dictionary<string, object> value)

Метки

В MiniWord используются шаблоны строк, похожие на Vue и React, {{tag}}, где tag и значение параметра должны совпадать (с учётом регистра), и система автоматически заменит строку.

Текст

{{tag}}
Пример кода
var value = new Dictionary<string, object>()
{
    ["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);
Шаблон
Вывод

Изображение

Значение метки — класс MiniWordPicture.

Пример кода
var value = new Dictionary<string, object>()
{
    ["Logo"] = new MiniWordPicture() { Path= PathHelper.GetFile("DemoLogo.png"), Width= 180, Height= 180 }
};
MiniWord.SaveAsByTemplate(path, templatePath, value);
Шаблон
Вывод

Список

Значение метки — string[] или IList.

Пример кода
var value = new Dictionary<string, object>()
{
    ["managers"] = new[] { "Jack" ,"Alan"},
    ["employees"] = new[] { "Mike" ,"Henry"},
};
MiniWord.SaveAsByTemplate(path, templatePath, value);
Шаблон
Вывод

Таблица

Значение метки — IEmerable<Dictionary<string,object>>.

Пример кода
var value = new Dictionary<string, object>()
{
    ["TripHs"] = new List<Dictionary<string, object>>
    {
        new Dictionary<string, object>
        {
            { "sDate",DateTime.Parse("2022-09-08 08:30:00")},
            { "eDate",DateTime.Parse("2022-09-08 15:00:00")},
            { "How","Discussion requirement **Вот перевод текста на русский язык:**

«Часть 1»,  
{ «Photo»,new MiniWordPicture() { Path = PathHelper.GetFile("DemoExpenseMeeting02.png"), Width = 160, Height = 90 }},  
},  
new Dictionary<string, object>  
{  
    { "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);

**Шаблон:**  
![image](https://user-images.githubusercontent.com/12729184/190843632-05bb6459-f1c1-4bdc-a79b-54889afdfeea.png)  
**Вывод:**  
![image](https://user-images.githubusercontent.com/12729184/190843663-c00baf16-21f2-4579-9d08-996a2c8c549b.png)

### Двухуровневый список  

Тег  это класс `IEnumerable<MiniWordForeach>`. Используется способом `{{foreach` и `endforeach}}`.  

**Пример:**  
```csharp  
var value = new Dictionary<string, object>()  
{  
    ["TripHs"] = new List<Dictionary<string, object>>  
    {  
        new Dictionary<string, object>  
        {  
            { "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<MiniWordForeach>()  
                {  
                    new MiniWordForeach()  
                    {  
                        Value = new Dictionary<string, object>()  
                        {  
                            {"Text", "Air"},  
                            {"Value", "Airplane"}  
                        },  
                        Separator = " | "  
                    },  
                    new MiniWordForeach()  
                    {  
                        Value = new Dictionary<string, object>()  
                        {  
                            {"Text", "Parking"},  
                            {"Value", "Car"}  
                        },  
                        Separator = " / "  
                    }  
                }  
            }  
        }  
    }  
};  
MiniWord.SaveAsByTemplate(path, templatePath, value);  

Шаблон:
before_foreach
Результат:
after_foreach

Условное суждение

Теги @if и @endif.

Пример:

var value = new Dictionary<string, object>()  
{  
    ["Name"] = new List<MiniWordHyperLink>(){  
        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);  

Шаблон:
before_if
Результат:
after_if

Многоцветные шрифты

Пример:

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);  
``` ```
    public IActionResult DownloadWordFromTemplateBytes()
    {
        byte[] bytes = TemplateBytesCache["TestTemplateComplex.docx"];

        Dictionary<string, object> 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"
        };
    }

Поддержка: Donate Link

wechat alipay

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/dotnetchina-MiniWord.git
git@api.gitlife.ru:oschina-mirror/dotnetchina-MiniWord.git
oschina-mirror
dotnetchina-MiniWord
dotnetchina-MiniWord
main