使用EPPlus和WebApi将数据导出为ex​​cel

时间:2018-01-31 22:47:26

标签: asp.net-mvc excel asp.net-web-api epplus

我试图导出一个列表,但是当我打开文件下载时,它只显示了一堆没有意义的特征(有点看起来像机器语言)。我在这里查看了一些代码,所有代码都与我的相似,我缺少什么?

这是我的代码:

我打电话的方法:

 [HttpGet]
    public HttpResponseMessage Get()
    {
        HttpResponseMessage response;
        response = Request.CreateResponse(HttpStatusCode.OK);
        MediaTypeHeaderValue mediaType = new MediaTypeHeaderValue("application/ms-excel");
        response.Content = new StreamContent(GetExcelSheet());
        response.Content = response.Content;
        response.Content.Headers.ContentType = mediaType;
        response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
        response.Content.Headers.ContentDisposition.FileName = "PivotGrid_Orders.xls";
        return response;
    }

格式化单元格的方法:

        public MemoryStream GetExcelSheet()
    {
        using (var package = new ExcelPackage())
        {
            var worksheet = package.Workbook.Worksheets.Add("Orders");
            //worksheet.Cells["A1"].LoadFromCollection()
            worksheet.Cells["A1"].LoadFromCollection(Orders(), false);
            package.Save();
            var stream = new MemoryStream(package.GetAsByteArray()); //capacidade
            return stream;
        }
    }

我为测试而创建的列表:

    public List<ExListModel> Orders()
    {
        List<ExListModel> lst = new List<ExListModel>();

        orders.Add(new ExListModel{ Nome = "Developer"});
        return lst;
    }

1 个答案:

答案 0 :(得分:1)

由于我不知道EPPlus,我用谷歌搜索它,它的Github页面声明它生成Open XML excel文件(.xlsx)。您生成的文件具有旧二进制excel文件类型的扩展名和mimetype。将contenttype更改为application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,将文件扩展名更改为xlsx。