Этот раздел руководства объясняет, как использовать Magicodes.IE.Excel для импорта и экспорта изображений.
/// <summary>
/// Тип импорта изображений
/// </summary>
public enum ImportImageTo
{
/// <summary>
/// Импорт в временную директорию
/// </summary>
TempFolder,
/// <summary>
/// Импорт в формате Base64
/// </summary>
Base64
}
Install-Package 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 будет заменено текстом замены). Результат представлен ниже:
IE.Excel поддерживает импорт изображений из Excel, просто используя функцию "ImportImageField". Поддерживается два метода импорта:
Необходимо установить только свойство ImportImageTo.
Перечень значений ImportImageTo
Замечательно отметить, что, как указано выше, поддерживаются только строковые типы данных для свойств изображений.
Прежде чем начать, нам нужно подготовить Excel для импорта, шаблон которого представлен ниже:
Вы можете найти этот файл в каталоге "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, достаточно установить свойство 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);
}
Как показано на рисунке ниже, можно легко получить базовый кодированный результат изображения:
https://github.com/dotnetcore/Magicodes.IE
Magicodes.IE: Общие библиотеки для импорта и экспорта, поддерживающие импорт и экспорт DTO, шаблонный экспорт, сложный экспорт и динамический экспорт, поддерживающий Excel, CSV, Word, PDF и HTML.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )