我正在创建一个带有端点的asp.net Core API,以将数据导出为excel文件。 我添加了nuget包EPPlus.Core。
到目前为止,这是我的代码:
using OfficeOpenXml;
...
Public class DataService
{
...
public Byte[] Export(ExportRequest request){
var data = _repository(request);
using (var package = new ExcelPackage())
{
package.Workbook.Properties.Title = "Persons";
var worksheet = package.Workbook.Worksheets.Add("Persons");
//Headers
worksheet.Cells[1, 1].Value = "Id";
worksheet.Cells[1, 2].Value = "Name";
//Values
var row = 2;
foreach (var person in data.Persons)
{
worksheet.Cells[row, 1].Value = person.Id;
worksheet.Cells[row, 2].Value = person.Name;
row++;
}
return package.GetAsByteArray();
}
}
public class PersonController : Controller
{
[HttpPost]
[Route("{version:apiVersion}/[controller]/Export")]
[SwaggerResponse(400, typeof(Exception), "Error in request")]
[SwaggerResponse(500, typeof(Exception), "Error on server")]
public IActionResult Export([FromBody] ExportRequest request)
{
Byte[] byteArray = _projectService.ExportRegistrations(request);
if (byteArray != null)
{
return File(byteArray, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "persons.xlsx");
}
return BadRequest("Failure");
}
}
我使用swagger测试我的API并获取一个名为persons.xlsx的文件。 但我无法打开它。 我得到以下两个承诺:
我们发现了#34; persons.xlsx"的某些内容存在问题,我们是否应尽量恢复?如果您信任该工作簿的来源,请单击“是”。
文件" persons.xlsx"无法打开,因为文件格式或文件类型名称无效。验证文件是否已损坏,以及文件类型名称是否与文件格式匹配。
然后是一个空的excel文档。
答案 0 :(得分:0)
我也面临着同样的问题,
解决方法是直接通过浏览器或邮递员打开URL。