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

OSCHINA-MIRROR/magicodes-Magicodes.IE

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
8. Import and export Excel as pictures.md 12 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 03.03.2025 03:18 5e09f6d

Используйте Magicodes.IE.Excel для импорта и экспорта изображений в Excel

Описание

Этот раздел руководства объясняет, как использовать Magicodes.IE.Excel для импорта и экспорта изображений.

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

  • Настройка DTO для экспорта изображений в Excel
  • Настройка DTO для импорта изображений в Excel

Описание функции импорта и экспорта изображений

Экспорт изображений с помощью атрибута ExportImageFieldAttribute

  • Высота: Высота (по умолчанию 15)
  • Ширина: Ширина (по умолчанию 50)
  • Alt: Текст замены при отсутствии изображения
  • YOffset: Вертикальное смещение (может использоваться для перемещения изображения)
  • XOffset: Горизонтальное смещение (может использоваться для перемещения изображения)

Импорт изображений с помощью атрибута ImportImageFieldAttribute

  • ImageDirectory: Путь хранения изображений (по умолчанию временная директория)
  • ImportImageTo: Метод экспорта изображений (по умолчанию Base64), поддерживаемые методы показаны ниже:
    /// <summary>
    ///     Тип импорта изображений
    /// </summary>
    public enum ImportImageTo
    {
        /// <summary>
        ///     Импорт в временную директорию
        /// </summary>
        TempFolder,

        /// <summary>
        ///     Импорт в формате Base64
        /// </summary>
        Base64
    }

Основные шаги

1. Установите пакет Magicodes.IE.Excel

Install-Package Magicodes.IE.Excel

2. Экспортирование изображений в Excel с помощью Magicodes.IE.Excel

Как показано в следующем образце кода, нам нужно добавить свойству изображения - ExportImageFieldAttribute, используя свойство "Width" для установки ширины изображения, "Height" для высоты, "Alt" для текста замены, который будет отображен при отсутствии изображения:

   [ExcelExporter(Name = "тест")]
    public class ExportTestDataWithPicture
    {
        [ExporterHeader(DisplayName = "жирный текст", IsBold = true)]
        public string Text { get; set; }

        [ExporterHeader(DisplayName = "обычный текст")] public string Text2 { get; set; }
        [ExporterHeader(DisplayName = "игнорировать", IsIgnore = true)]
        public string Text3 { get; set; }

        [ExportImageField(Width = 20, Height = 120)]
        [ExporterHeader(DisplayName = "изображение 1")]
        public string Img1 { get; set; }
        [ExporterHeader(DisplayName = "число", Format = "#,##0")]
        public decimal Number { get; set; }
        [ExporterHeader(DisplayName = "имя", IsAutoFit = true)]
        public string Name { get; set; }
        /// <summary>
        /// тест времени
        /// </summary>
        [ExporterHeader(DisplayName = "время 1", Format = "yyyy-MM-dd")]
        public DateTime Time1 { get; set; }

        [ExportImageField(Width = 50, Height = 120, Alt = "404")]
        [ExporterHeader(DisplayName = "изображение", IsAutoFit = false)]
        public string Img { get; set; }
    }

Замечательно отметить:

  • Атрибут ExportImageFieldAttribute требует указания всех его свойств
  • Тип свойства изображения должен быть строковым типом данных, поддерживающим локальные и удаленные адреса изображений

Далее мы можем использовать API для выполнения экспорта. В действительности, за исключением различий в Dto, API экспорта остается одним и тем же, как показано в следующем коде:

        public async Task ExportPicture_Test()
        {
            IExporter exporter = new ExcelExporter();
            var url = Path.Combine("TestFiles", "ExporterTest.png");
            for (var i = 0; i < data.Count; i++)
            {
                var item = data[i];
                item.Img1 = url;
                if (i == 4)
                    item.Img = null;
                else
                    item.Img = "https://docs.microsoft.com/en-us/media/microsoft-logo-dark.png";
            }
            var result = await exporter.Export(filePath, data);
        }

Как показано выше, текущий экспортирование изображений может быть установлено как удаленный адрес изображения, так и локальный адрес, а также может быть установлено значение null (null будет заменено текстом замены). Результат представлен ниже:

Экспорт изображений

3. Импорт изображений с помощью Magicodes.IE.Excel

IE.Excel поддерживает импорт изображений из Excel, просто используя функцию "ImportImageField". Поддерживается два метода импорта:

  • Импорт в временную директорию
  • Импорт в формате Base64

Необходимо установить только свойство ImportImageTo.

Перечень значений ImportImageTo

  • Base64: Импорт в формате Base64
  • TempFolder: Импорт в временную директорию

Замечательно отметить, что, как указано выше, поддерживаются только строковые типы данных для свойств изображений.

Подготовка Excel для импорта изображений

Прежде чем начать, нам нужно подготовить Excel для импорта, шаблон которого представлен ниже: Импорт изображений в формате Base64

Вы можете найти этот файл в каталоге "TestFiles" юнит-теста. Далее мы будем использовать этот файл для демонстрации импорта изображений в Excel.

Импорт в временную директорию

Модель Dto представлена ниже:


    public class ImportPictureDto
    {
        [ImporterHeader(Name = "жирный текст")]
        public string Text { get; set; }
        [ImporterHeader(Name = "обычный текст")]
        public string Text2 { get; set; }

        /// <summary>
        /// Сохраняет изображение в временную директорию
        /// </summary>
        [ImportImageField(ImportImageTo = ImportImageTo.TempFolder)]
        [ImporterHeader(Name = "изображение 1")]
        public string Img1 { get; set; }
        [ImporterHeader(Name = "число")]
        public string Number { get; set; }
        [ImporterHeader(Name = "имя")]
        public string Name { get; set; }
        [ImporterHeader(Name = "дата")]
        public DateTime Time { get; set; }

        /// <summary>
        /// Сохраняет изображение в временную директорию
        /// </summary>
        [ImportImageField(ImportImageTo = ImportImageTo.TempFolder)]
        [ImporterHeader(Name = "изображение")]
        public string Img { get; set; }
    }

Оригинальный метод импорта используется, но настройки Dto были изменены:

        public async Task ImportPicture_Test()
        {
            var filePath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "Import", "шаблон_импорта_изображений.xlsx");
            var import = await Importer.Import<ImportPictureDto>(filePath);
            if (import.Exception != null) _testOutputHelper.WriteLine(import.Exception.ToString());

            if (import.RowErrors.Count > 0) _testOutputHelper.WriteLine(JsonConvert.SerializeObject(import.RowErrors));
        }

Как показано на рисунке ниже, изображения в Excel будут импортированы в временную директорию. Замечательно отметить:

  • После того, как изображения были импортированы в временную директорию, если результаты импорта удовлетворяют бизнес-потребностям, немедленно переместите изображения в официальное место хранения, такое как веб-каталог, облачная хранилище и т.д.;
  • Импорт изображений также поддерживает конкретные расположения, но это не рекомендуется.Импорт в временную директорию

Импорт изображений в формате Base64

Чтобы импортировать изображение в формате Base64, достаточно установить свойство ImportImageTo со значением "ImportImageTo.Base64":


    public class ImportPictureBase64Dto
    {
        [ImporterHeader(Name = "жирный текст")]
        public string Text { get; set; }
        [ImporterHeader(Name = "обычный текст")]
        public string Text2 { get; set; }

        /// <summary>
        /// Импорт изображения в формате Base64 (по умолчанию Base64)
        /// </summary>
        [ImportImageField(ImportImageTo = ImportImageTo.Base64)]
        [ImporterHeader(Name = "изображение 1")]
        public string Img1 { get; set; }

        [ImporterHeader(Name = "число")]
        public string Number { get; set; }
        [ImporterHeader(Name = "имя")]
        public string Name { get; set; }
        [ImporterHeader(Name = "дата")]
        public DateTime Time { get; set; }

        /// <summary>
        /// Сохраняет изображение в временную директорию
        /// </summary>
        [ImportImageField(ImportImageTo = ImportImageTo.TempFolder)]
        [ImporterHeader(Name = "изображение")]
        public string Img { get; set; }
    }

Код импорта аналогичен:


public async Task ImportPictureBase64_Test()
{
    var filePath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "Import", "шаблон_импорта_изображений.xlsx");
    var import = await Importer.Import<ImportPictureBase64Dto>(filePath);
}

Как показано на рисунке ниже, можно легко получить базовый кодированный результат изображения: Импорт изображений в формате Base64

Ссылки

https://github.com/dotnetcore/Magicodes.IE

Magicodes.IE: Общие библиотеки для импорта и экспорта, поддерживающие импорт и экспорт DTO, шаблонный экспорт, сложный экспорт и динамический экспорт, поддерживающий Excel, CSV, Word, PDF и HTML.

Опубликовать ( 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