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

OSCHINA-MIRROR/magicodes-Magicodes.IE

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
4.Use in Docker.md 8.2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 03.03.2025 03:18 5e09f6d

Magicodes.IE для использования в Docker

Описание

Этот раздел подробно объясняет использование Magicodes.IE и его конфигурацию в среде Docker.

Основные моменты

  • Экспорт Excel через DTO
  • Экспорт PDF
  • Конфигурация Docker

Пример

Пример экспорта.

Install-Package Magicodes.IE.Excel
Install-Package Magicodes.IE.Pdf
  • Экспорт Excel
    [ExcelExporter(Name = "Студентская информация", TableStyle = "Light10", AutoFitAllColumn = true,
        MaxRowNumberOnASheet = 2)]
    public class StudentExcel
    {

        /// <summary>
        ///     Имя
        /// </summary>
        [ExporterHeader(DisplayName = "Имя")]
        public string Name { get; set; }
        /// <summary>
        ///     Возраст
        /// </summary>
        [ExporterHeader(DisplayName = "Возраст")]
        public int Age { get; set; }
        /// <summary>
        ///     Примечание
        /// </summary>
        public string Remarks { get; set; }
        /// <summary>
        ///     Дата рождения
        /// </summary>
        [ExporterHeader(DisplayName = "Дата рождения", Format = "yyyy-MM-dd")]
        public DateTime Birthday { get; set; }
    }

        public async Task<IActionResult> ExporterExcel()
        {
            IExporter exporter = new ExcelExporter();

            var result = await exporter.Export(Path.Combine("wwwroot", "test.xlsx"), new List<StudentExcel>()
            {
                new StudentExcel
                {
                    Name = "Мистер А",
                    Age = 18,
                    Remarks = "Меня зовут Мистер А, мне 18 лет",
                    Birthday = DateTime.Now
                },
                new StudentExcel
                {
                    Name = "Мистер Б",
                    Age = 19,
                    Remarks = "Меня зовут Мистер Б, мне 19 лет",
                    Birthday = DateTime.Now
                },
                new StudentExcel
                {
                    Name = "Мистер C",
                    Age = 20,
                    Remarks = "Меня зовут Мистер C, мне 20 лет",
                    Birthday = DateTime.Now
                }
            });

            return File("test.xlsx", "application/ms-excel", result.FileName);
        }
  • Экспорт PDF

    [PdfExporter(Name = "Студентская информация")]
    public class StudentPdf
    {
        /// <summary>
        ///     Имя
        /// </summary>
        [ExporterHeader(DisplayName = "Имя")]
        public string Name { get; set; }
        /// <summary>
        ///     Возраст
        /// </summary>
        [ExporterHeader(DisplayName = "Возраст")]
        public int Age { get; set; }
        /// <summary>
        ///     Примечание
        /// </summary>
        public string Remarks { get; set; }
        /// <summary>
        ///     Дата рождения
        /// </summary>
        [ExporterHeader(DisplayName = "Дата рождения", Format = "yyyy-MM-dd")]
        public DateTime Birthday { get; set; }
    }

        public async Task<IActionResult> ExporterPdf()
        {
            var exporter = new PdfExporter();
            var result = await exporter.ExportListByTemplate(Path.Combine("wwwroot", "test.pdf"), new List<StudentPdf>()
            {
                new StudentPdf
                {
                    Name = "Мистер А",
                    Age = 18,
                    Remarks = "Меня зовут Мистер А, мне 18 лет",
                    Birthday = DateTime.Now
                },
                new StudentPdf
                {
                    Name = "Мистер Б",
                    Age = 19,
                    Remarks = "Меня зовут Мистер Б, мне 19 лет",
                    Birthday = DateTime.Now
                },
                new StudentPdf
                {
                    Name = "Мистер C",
                    Age = 20,
                    Remarks = "Меня зовут Мистер C, мне 20 лет",
                    Birthday = DateTime.Now
                }
            });

            return File("test.pdf", "application/pdf", result.FileName);
        }

С использованием вышеуказанного кода мы создали демонстрационный пример экспорта, Основные характеристики и свойства можно найти в двух предыдущих статьях. Базовый учебник — экспорт ExcelБазовый учебник — экспорт PDF

Настройка Dockerfile

# Рекомендуется использовать этот базовый образ по следующим причинам. В этом образе установлена библиотека libgdiplus.
FROM ccr.ccs.tencentyun.com/magicodes/aspnetcore-runtime:latest AS base

WORKDIR /src
RUN ls
COPY /src/Magicodes.IE.Exporter/simsun.ttc /usr/share/fonts/simsun.ttc

WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:latest AS build
WORKDIR /src
COPY ["Magicodes.IE.Exporter.csproj", "src/Magicodes.IE.Exporter/"]
RUN dotnet restore "src/Magicodes.IE.Exporter/Magicodes.IE.Exporter.csproj"
COPY . .
WORKDIR "src/Magicodes.IE.Exporter"
RUN dotnet build "Magicodes.IE.Exporter.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "Magicodes.IE.Exporter.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Magicodes.IE.Exporter.dll"]
# Если вы не используете указанный выше базовый образ, вам потребуется добавить следующую команду для установки библиотеки libgdiplus для экспорта Excel
RUN apt-get update && apt-get install -y libgdiplus libc6-dev
RUN ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll
# Установка библиотеки fontconfig для экспорта PDF
RUN apt-get update && apt-get install -y fontconfig
# Копирование файла шрифтов
COPY /simsun.ttc /usr/share/fonts/simsun.ttc

Обратите внимание, что вышеупомянутый базовый образ использует: (ccr.ccs.tencentyun.com/magicodes/aspnetcore-runtime:latest), адрес GitHub этого образа: (https://github.com/xin-lai/aspnetcore-docker).

Причины рекомендации:

  • Ускоряет сборку и получение образа, ускоряет процесс CI/CD и повышает опыт разработки
  • По умолчанию часовой пояс установлен на UTC+8, см. "ENV TZ=Asia/Shanghai"
  • По умолчанию установлены библиотеки libgdiplus и другие для поддержки импорта и экспорта Excel (установка не требуется начиная с версии 2.7)
  • В настоящее время мы предоставляем публичные зеркала Tencent Cloud и hub.docker, вы можете использовать их по мере необходимости.

Ссылки

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

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

1
https://api.gitlife.ru/oschina-mirror/magicodes-Magicodes.IE.git
git@api.gitlife.ru:oschina-mirror/magicodes-Magicodes.IE.git
oschina-mirror
magicodes-Magicodes.IE
magicodes-Magicodes.IE
master