using Magicodes.ExporterAndImporter.Core.Extension; using Magicodes.ExporterAndImporter.Core.Models; using Magicodes.ExporterAndImporter.Excel; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.DependencyInjection; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using Wood.Entity; using Wood.Service.SystemManage.Param; namespace Wood.Service { /// /// service基础类 /// public class ApiService : ControllerBase { protected async Task ExportFile(ICollection dtos,string fileName) where T : class, new() { var excelExporter = HttpContext.RequestServices.GetRequiredService(); var res = await excelExporter.ExportAsByteArray(dtos); return new FileStreamResult(new MemoryStream(res), "application/octet-stream") { FileDownloadName = DateTime.Now.ToString("yyyyMMddHHmm") +"_"+ fileName }; } protected async Task> ImportFile(IFormFile file,List errors) where T : class, new() { var excelImporter = HttpContext.RequestServices.GetRequiredService(); ImportResult result = await excelImporter.Import(file.OpenReadStream()); if (result.HasError) { foreach (var item in result.RowErrors) errors.Add(new ImportErrorDto { Index = item.RowIndex, Errors = string.Join(';', item.FieldErrors.Values.ToArray()) }); foreach (var item in result.TemplateErrors) errors.Add(new ImportErrorDto { Index = 0, Errors = item.RequireColumnName + "," + item.Message }); } return result; } } }