将数据集作为Excel返回

时间:2015-11-17 18:49:23

标签: excel asp.net-mvc-4 model-view-controller

MVC的新手,并且应该简单地解决一些问题。我正在尝试将数据集返回到只有Excel电子表格而没有任何真实用户界面。

这是我的代码(从几个来源中蚕食):

控制器代码:

    public ActionResult GetCommissionsExcel(string agencyid, string month, string year)
    {
        try
        {
            var as400rep = new iSeriesRepository(new iSeriesContext());
            var results = as400rep.GetCommissionExcel(agencyid, month, year);

            string xml = String.Empty;
            XmlDocument xmlDoc = new XmlDocument();

            XmlSerializer xmlSerializer = new XmlSerializer(results.GetType());

            using (System.IO.MemoryStream xmlStream = new System.IO.MemoryStream())
            {
                xmlSerializer.Serialize(xmlStream, results);
                xmlStream.Position = 0;
                xmlDoc.Load(xmlStream);
                xml = xmlDoc.InnerXml;
            }

            var fName = string.Format("CommissionsExcelExport-{0}", DateTime.Now.ToString("s"));

            byte[] fileContents = System.Text.Encoding.UTF8.GetBytes(xml);

            return File(fileContents, "application/vnd.ms-excel", fName);

            }
        catch (Exception ex)
        {
            Log.Error(ex.Message, ex.InnerException);
            throw;
        }
    }

jQuery调用:

function getExcelExport() {
    var activePane = $('div.tab-pane.active');

    var agencyCompany = $(activePane).find('#Agency_AgencyId').val();
    var month = $(activePane).find('#CommissionMonth').val();
    var year = $(activePane).find('#CommissionYear').val();

    var url = '@Url.Content("~")' + 'AgencyManagement/GetCommissionsExcel';

    window.location = 'AgencyManagement/GetCommissionsExcel';

    //$.post('@Url.Action("GetCommissionsExcel", "AgencyManagement")' , {agencyid: agencyCompany, month: month, year: year});
};

它会撤回数据,但我无法弄清楚如何从搜索窗口弹出数据。它看起来像window.location行进行调用,但我需要将参数发布到调用中,这就是我被卡住的地方。

1 个答案:

答案 0 :(得分:0)

想出来。只需按如下方式调用jQuery:

window.location = 'AgencyManagement/GetCommissionsExcel?agencyID=' + agencyCompany + '&month=' + month + '&year=' + year;

我需要在控制器操作中将“.xls”附加到文件名中。

var fName = string.Format("CommissionsExcelExport-{0}", DateTime.Now.ToString("s"));
            fName = fName + ".xls";

像魅力一样工作