Magicodes.IE в настоящее время поддерживает экспорт шаблона Excel с использованием JObject
, Dictionary
и ExpandoObject
для динамического экспорта. Подробнее см. данное руководство.
Эта функция была частично реализована на основе работы arik. Благодарю еще раз arik!
Перед началом этого руководства повторите синтаксис шаблонного экспорта:
{{Company}} //Отображение ячейки
{{Table>>BookInfos|RowNo}} //Начало отображения таблицы
{{Remark|>>Table}}//Конец отображения таблицы
{{Image::ImageUrl?Width=50&Height=120&Alt=404}} //Отображение изображения
{{Image::ImageUrl?w=50&h=120&Alt=404}} //Отображение изображения
{{Image::ImageUrl?Alt=404}} //Отображение изображения
{{Formula::AVERAGE?params=G4:G6}} //Отображение формулы
{{Formula::SUM?params=G4:G6&G4}} //Отображение формулы
Если вы не знакомы с шаблонным экспортом Magicodes.IE, прочитайте следующее руководство.
Шаблон экспорта Excel — Экспорт заказа книг
Дальше мы начинаем это руководство.
Install-Package Magicodes.IE.Excel
Пример ниже.
Этот файл можно найти в тестовом проекте с названием 【DynamicExportTpl.xlsx】.
Код достаточно простой и представлен ниже.
string json = @"{
'Company': '雪雁',
'Address': '湖南长沙',
'Contact': '雪雁',
'Tel': '136xxx',
'BookInfos': [
{'No':'a1','RowNo':1,'Name':'Docker+Kubernetes应用开发与快速上云','EditorInChief':'李文强','PublishingHouse':'机械工业出版社','Price':65,'PurchaseQuantity':10000,'Cover':'https://img9.doubanio.com/view/ark_article_cover/retina/public/135025435.jpg?v=1585121965','Remark':'备注'},
{'No':'a1','RowNo':1,'Name':'Docker+Kubernetes应用开发与快速上云','EditorInChief':'李文强','PublishingHouse':'机械工业出版社','Price':65,'PurchaseQuantity':10000,'Cover':'https://img9.doubanio.com/view/ark_article_cover/retina/public/135025435.jpg?v=1585121965','Remark':'备注'}
]
}";
var jobj = JObject.Parse(json);
//Путь до шаблона
var tplPath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "ExportTemplates",
"DynamicExportTpl.xlsx");
//Создание объектов экспорта Excel
IExportFileByTemplate exporter = new ExcelExporter();
//Путь экспорта
var filePath = Path.Combine(Directory.GetCurrentDirectory(), nameof(DynamicExportByTemplate_Test) + ".xlsx");
if (File.Exists(filePath)) File.Delete(filePath);
//Экспорт из шаблона
await exporter.ExportByTemplate(filePath, jobj, tplPath);
Вышеуказанный код можно найти в юнит-тесте DynamicExportWithJObjectByTemplate_Test
.
Важно отметить, что поскольку используется JObject
, вам потребуется установить пакет Newtonsoft.Json
. Однако, Magicodes.IE.Excel
не зависит от Newtonsoft.Json
встроенно.
В настоящее время динамический экпорт шаблонов Excel поддерживается только через объекты JObject
, а в будущем будут поддерживаться более динамичные методы.
После запуска вы можете видеть результаты, как показано на следующем рисунке.
Экспортированный код такой же, как выше, за исключением того, что используется структура данных Dictionary
.
var data = new Dictionary<string, object>()
{
{ "Company","雪雁" },
{ "Address", "湖南长沙" },
{ "Contact", "雪雁" },
{ "Tel", "136xxx" },
{ "BookInfos",new List<Dictionary<string,object>>()
{
new Dictionary<string, object>()
{
{"No","A1" },
{"RowNo",1 },
{"Name","Docker+Kubernetes应用开发与快速上云" },
{"EditorInChief","李文强" },
{"PublishingHouse","机械工业出版社" },
{"Price",65 },
{"PurchaseQuantity",50000 },
{"Cover","https://img9.doubanio.com/view/ark_article_cover/retina/public/135025435.jpg?v=1585121965" },
{"Remark","买起" }
},
new Dictionary<string, object>()
{
{"No","A2" },
{"RowNo",2 },
{"Name","Docker+Kubernetes应用开发与快速上云" },
{"EditorInChief","李文强" },
{"PublishingHouse","机械工业出版社" },
{"Price",65 },
{"PurchaseQuantity",50000 },
{"Cover","https://img9.doubanio.com/view/ark_article_cover/retina/public/135025435.jpg?v=1585121965" },
{"Remark","k8s真香" }
}
}
}
};
//Путь до шаблона
var tplPath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "ExportTemplates",
"DynamicExportTpl.xlsx");
//Создание объектов экспорта Excel
IExportFileByTemplate exporter = new ExcelExporter();
//Путь экспорта
var filePath = Path.Combine(Directory.GetCurrentDirectory(), nameof(DynamicExportWithDictionaryByTemplate_Test) + ".xlsx");
if (File.Exists(filePath)) File.Delete(filePath);
//Экспорт из шаблона
await exporter.ExportByTemplate(filePath, data, tplPath);
Укажите конкретный код DynamicExportWithDictionaryByTemplate_Test
.
Как и выше, код представлен ниже.
dynamic data = new ExpandoObject();
data.Company = "雪雁";
data.Address = "湖南长沙";
data.Contact = "雪雁";
data.Tel = "136xxx";
data.BookInfos = new List<ExpandoObject>() { };
dynamic book1 = new ExpandoObject();
book1.No = "A1";
book1.RowNo = 1;
book1.Name = "Docker+Kubernetes应用开发与快速上云";
book1.EditorInChief = "李文强";
book1.PublishingHouse = "机械工业出版社";
book1.Price = 65;
book1.PurchaseQuantity = 50000;
book1.Cover = "https://img9.doubanio.com/view/ark_article_cover/retina/public/135025435.jpg?v=1585121965";
book1.Remark = "买买买";
data.BookInfos.Add(book1);
dynamic book2 = new ExpandoObject();
book2.No = "A2";
book2.RowNo = 2;
book2.Name = "Docker+Kubernetes应用开发与快速上云";
book2.EditorInChief = "李文强";
book2.PublishingHouse = "机械工业出版社";
book2.Price = 65;
book2.PurchaseQuantity = 50000;
book2.Cover = "https://img9.doubanio.com/view/ark_article_cover/retina/public/135025435.jpg?v=1585121965";
book2.Remark = "买买买";
data.BookInfos.Add(book2);
//Путь до шаблона
var tplPath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "ExportTemplates",
"DynamicExportTpl.xlsx");
//Создание объектов экспорта Excel
IExportFileByTemplate exporter = new ExcelExporter();
//Путь экспорта
var filePath = Path.Combine(Directory.GetCurrentDirectory(), nameof(DynamicExportWithExpandoObjectByTemplate_Test) + ".xlsx");
if (File.Exists(filePath)) File.Delete(filePath);
//Экспорт согласно шаблону
await exporter.ExportByTemplate(filePath, data, tplPath);
Укажите конкретный код DynamicExportWithExpandoObjectByTemplate_Test
.
Это руководство завершено. Если у вас есть вопросы, пожалуйста, отправьте больше запросов.
Magicodes.IE: универсальные библиотеки импорта и экспорта, поддерживающие импорт и экспорт DTO, шаблонный экспорт, сложный экспорт и динамический экспорт, поддерживают Excel, CSV, Word, PDF и HTML.
Связанные библиотеки постоянно обновляются, могут быть небольшие различия в опыте использования и этом руководстве. Для справки используйте конкретный код, версию логов, примеры юнит-тестов.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )