如何使用MVC以pdf格式导出数据?

时间:2015-06-09 17:00:56

标签: asp.net-mvc

这是我的索引方法,我通过它获取webgird中的数据列表。当我点击按钮时,如何编写导出此数据列表的方法?

公共ActionResult索引(字符串eMailId)         {

        var refEntry = _moneyReport.GetAll().Where(a => a.EmailId == eMailId).ToList();
        var credittotal = _moneyReport.GetAll().Where(a => a.EmailId == eMailId && a.PromoValue < 0).Sum(a => a.PromoValue);
        decimal TotalCredit = Convert.ToDecimal(credittotal * -1);
        var debittotal = _moneyReport.GetAll().Where(a => a.EmailId == eMailId && a.PromoValue >0).Sum(a => a.PromoValue);
        decimal TotalDebit = Convert.ToDecimal(debittotal);

        ViewBag.TotDebit = TotalDebit;
        ViewBag.TotCredit = TotalCredit;

        if(TotalCredit>TotalDebit)
        {
            decimal FinalTotal = TotalCredit - TotalDebit;
            ViewBag.Total = FinalTotal;
        }

        else
        {
            decimal FinalTotal = TotalDebit - TotalCredit;
            ViewBag.Total = FinalTotal;
        }

        return View(refEntry);

    }

这是我的视图页面,我在这里输入了一个emailid,加载和导出按钮`输入代码。

@using (Html.BeginForm())
    {
    <div class="container-fluid form-row">
        <div class="col-md-12 no-padding">
            <div class="col-md-3  no-padding">
                <input type="text" name="eMailId" id="eMailId" />
                <span class="highlight"></span>
                <span class="bar"></span>
                <label class="no-left">Enter Email Id <sup class="star">*</sup></label>
            </div>
            <div class="col-md-3">
                <input type="text" id="gName" name="gName" readonly="readonly" />
                <span class="highlight"></span>
                <span class="bar"></span>
                <label>Name</label>
            </div>
            <div class="col-md-3">
                <input type="submit" id="btnLoad" class="btn btn-md pm-create" value="Load" />
                <input type="submit" id="btnLoad" class="btn btn-md" value="Export To PDF" />
            </div>
            
            <input type="hidden" id="HdnEmail" value='@TempData["MailID"]' />
        </div>
    </div>
}
   
    <div id="report-grid">
        @{Html.RenderPartial("ImportMoneyReport", Model);}
    </div>

ImPortMoneyReport是我的部分页面,其中包含webgrid。

2 个答案:

答案 0 :(得分:1)

你想要一些有用且易于使用的东西。看看https://github.com/andyhutch77/MvcRazorToPdf

请阅读文档。

示例代码。看看这个。 https://github.com/andyhutch77/MvcRazorToPdf/tree/master/MvcRazorToPdfExample

如果您遇到一些问题,请访问他们的github页面并单击“问题”选项卡,或许您的一些问题已在那里得到解决。

P.S。

某些PDF库(如Rotativa)需要运行可执行程序,当您的应用程序部署到Azure时无法运行,因为Azure不支持exe文件(我想出于安全目的),否则您将创建一个webjob只是为了exe文件。

答案 1 :(得分:0)

要将模型数据导出为PDF,您必须使用第三方pdf导出库之一,如下面的少数几个。您可以在各自的网站上找到示例,也可以谷歌查看。您需要实现代码以导出pdf并通过在Response.OutputStream操作中设置相应的内容类型将该文件/流添加到ImportMoneyReport。此外,您必须在帖子/事件上调用ImportMoneyReport方法,您无法使用Html.RenderPartial导出;否则,您只能将导出代码放在Index操作中。

PDF Sharp

iTextSharp