Javascript 如何将返回的JSON提取到excel工作表

Javascript 如何将返回的JSON提取到excel工作表,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,我使用以下方法调用返回JSON的web API:- public ActionResult CompletedProcessList(int start = 0, int rows = 50) { using (var client = new WebClient()) { try { var query

我使用以下方法调用返回JSON的web API:-

public ActionResult CompletedProcessList(int start = 0, int rows = 50)
        {
            using (var client = new WebClient())
            {            

                try
                {
                    var query = HttpUtility.ParseQueryString(string.Empty);
                    var url = new UriBuilder("http://localhost:8080/jw/web/json/monitoring/running/process/list");                    url.Query = query.ToString();
                    string json = client.DownloadString(url.ToString());
                    Thread.Sleep(500);
                    return Content(json, "application/json");
                }
                catch (System.Net.WebException)
                {

                    return Content("error", "application/json");
                }   }        }
然后使用javaScript在表上显示返回的JSON,javaScript代码是:-

function getprocesslist(result) {

    $('#tablelist tbody, #tablelist thead').empty();


    var str = 'Total Number Of Processes:- ' + result.total.toString();
        $('#total').text(str.toString());

        var str1 = '<tr><th>NO.</th><th>' + 'Process Name' + '</th><th>' + 'Process Requestor ID' + '</th><th>' + 'Process State' + ' </th><th>' + 'Process Start Date' + ' </th><th>' + 'Process Due Date' + ' </th></tr>';
        $('#tablelist thead').append(str1);
        $.each(result.data, function (key, val) {
            var number = key +1 ;
        var str2 = '<tr><td>' + number  + '</td><td>' + val.name + '</td><td>' + val.requesterId + '</td><td>' + val.state + '</td><td>' + val.startedTime + '</td><td>' + val.due + '</td></tr>';

        $('#tablelist tbody').append(str2);

    });
}
函数getprocesslist(结果){ $(“#tablelist tbody,#tablelist thead”).empty(); var str='进程总数:-'+result.Total.toString(); $('#total').text(str.toString()); var str1='NO.+'Process Name'+''+'Process Requestor ID'++'+'+'+'流程状态'++'+'+'流程开始日期'+'+'流程到期日期'+'''; $('tablelist thead')。追加(str1); $.each(result.data,function(key,val){ 变量编号=键+1; var str2=''+number+''+val.name+''+val.requesterId+''+val.state+''+val.startedTime+''+val.due+''; $('#tablelist tbody')。追加(str2); }); } 上面的工作正常,但我需要实现一个新功能,其中我需要添加以下内容:-

  • “流程名称”和“流程截止日期”列中有两个复选框haed,因此用户可以选择这两个复选框中的任何一个

  • 将返回的JSON提取到excel工作表的按钮,系统应根据用户选择在excel工作表中包含“流程名称”或“流程截止日期”或两者

  • 致意

  • 对于第一部分,我不明白你到底在问什么——请说得更具体一点,然后再问另一个问题
  • 对于第二部分:我不知道如何直接导出到excel工作表(因为xls是一种专有格式),但您可以将数据导出为CSV(逗号分隔值)文档,这是excel所理解的。为Json2CSV提供一些解决方案-选择您喜欢的解决方案。在我们的案例中,我们使用一个组合的Javascript/PHP解决方案:
  • javascript-将CSV内容创建为文本:

    function DownloadJSON2CSV(objArray, documentToExportTitle) {
        var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
        var cols = array.cols;
        var rows = array.rows;
    
        //convert the cols 2 csv
        var str = '';
        var line = '';
        for (var i = 0; i < cols.length; i++) {
    
            line += cols[i].label + ',';
    
            // Here is an example where you would wrap the values in double quotes
            // for (var index in array[i]) {
            //    line += '"' + array[i][index] + '",';
            // }
    
            line.slice(0, line.Length - 1);                
        }
        str += line + '\r\n';
    
        //convert the rows 2 csv
        for (var i = 0; i < rows.length; i++) {
            line = '';
            for (var j = 0; j < rows[i].c.length; j++) {
                line += rows[i].c[j].v + ',';            
            }
    
            line.slice(0, line.length - 1);
            str += line + '\r\n';
        }
    
       //Call the php which will force downloading and saving in .csv format (which is excel ready)
        $("#reportContent").append('<form id="exportform" action="addressOfPhp" method="post" target="_blank"><input type="hidden" id="exportdata" name="exportdata" /><input type="hidden" id="docTitle" name="docTitle" /></form>');
        $("#exportdata").val(str);
        $("#docTitle").val(documentToExportTitle.replace(/ /g, "_"));
        $("#exportform").submit().remove();    
    }
    
    函数下载JSON2CSV(objArray,documentToExportTitle){
    var array=typeof objArray!=“object”?JSON.parse(objArray):objArray;
    var cols=array.cols;
    var rows=array.rows;
    //将cols 2转换为csv
    var-str='';
    var行=“”;
    对于(变量i=0;i
    php-在用户PC上强制下载为CSV文件提示:

     <?php
    
            header('Content-Type: application/force-download');
            header('Content-disposition: attachment; filename='.$_POST['docTitle'].'.csv');
    
            print $_POST['exportdata'];
    
        ?>
    
    
    

    希望有帮助。

    这是一个使用ActiveX的解决方案,您必须使用IE以便

    function CreateExcelSheet()
            {
                //var x = myTable.rows
                var x = json.length;
                var xls = new ActiveXObject("Excel.Application")
                xls.visible = true
                xls.Workbooks.Add
    
                var i = 1;
                var j = 0;
    
                $.each(json, function(index, item) {
                    $.each(item, function(key, value) {
                        xls.Cells(i + 1, j + 1).Value = value;
                        j++;
                    });
                    i++;
                });
    
            }