【问题标题】:Export data in CSV,PDF format using WEB API and angularjs使用 WEB API 和 angularjs 以 CSV、PDF 格式导出数据
【发布时间】:2015-06-16 11:21:55
【问题描述】:

我正在开发一个在服务器端使用 Web API 并在客户端使用 angularjs 的项目。要求之一是根据一些参数从数据库中检索数据,并将其导出为 csv 和 pdf 格式。我们正在使用异步/等待模式。我对 Web API 和 angularjs 有点陌生,在这个方向上没有找到好的资源。任何人都可以提出任何可以帮助我朝着正确方向开始的建议吗?

到目前为止,这是我所做的,但没有成功获得所需的输出。

// This is WEB API method
[HttpGet]
[Authorize]
[Route("ExportAppData")]
public IHttpActionResult ExportAppData()
{
    List<App> apps = _appRepository.GetAllApps();
    string csvData = ConvertToCSV(apps);
    HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
    result.Content = new StringContent(csvData);
    result.Content.Headers.ContentType = new   MediaTypeHeaderValue("application/octet-stream");
    result.Content.Headers.ContentDisposition = new    ContentDispositionHeaderValue("attachment");
    result.Content.Headers.ContentDisposition.FileName = "file.csv";
    return Ok(result);
}

// This is angularjs function call to call the above method
function exportAppData() {
        return $http(
            {url: 'api/Apps/ExportAppData', 
            method: "GET",
            headers: {'Content-Type': 'application/octet-stream'}
            }
            );
    }

当我运行时,我收到一条错误消息 “请求包含实体主体,但没有 Content-Type 标头。此资源不支持推断的媒体类型 'application/octet-stream'。”

知道我遗漏了什么吗?

【问题讨论】:

    标签: angularjs asp.net-web-api export-to-csv


    【解决方案1】:

    你需要一个自定义的MediaTypeFormatter

    阅读更多:ASP.NET Web API Series - Part 5: MediaTypeFormatter explained

    然后你在 WebApiConfig.cs 中注册它

    config.Formatters.Add(new PdfMediaTypeFormatter());
    

    有一个Create PDF’s with ASP.NET Web Api 的帖子可能对您有用。

    我个人只会添加 razor 视图并将它们作为 Web API 引入返回 IHttpActionResult 返回的 HTTP 消息似乎是 HttpResponseMessage 和 ASP.NET MVC 的 ActionResult 机制之间的交叉。

    阅读更多:

    那么也许您可以使用Rotativa,它在后台使用wkhtmltopdfiTextSharp

    wkhtmltopdf 和 wkhtmltoimage 是开源 (LGPLv3) 命令行 使用 QT 将 HTML 渲染为 PDF 和各种图像格式的工具 Webkit 渲染引擎。这些运行完全“无头”并且不 需要显示或显示服务。

    此外,您不能使用 AJAX 下载文件,您应该使用简单的 HTML &lt;form&gt;

    还有 RazorEngine - 一个基于 Razor 解析器的模板引擎,您可以使用。

    【讨论】:

      猜你喜欢
      • 2014-06-28
      • 2016-04-10
      • 1970-01-01
      • 2013-06-25
      • 1970-01-01
      • 2012-10-20
      • 2021-05-23
      • 1970-01-01
      • 2018-08-08
      相关资源
      最近更新 更多