-1

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 を table に表示しています。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);

    });
}

上記は正常に機能していますが、次を追加する必要がある新しい機能を実装する必要があります:-

  1. 「プロセス名」列と「プロセス期日」列内に 2 つのチェック ボックスがあるため、ユーザーは 2 つのチェック ボックスのいずれかを選択できます。

  2. 返された JSON を Excel シートに抽出するボタン。システムは、ユーザーの選択に基づいて Excel シートに「プロセス名」または「プロセス期日」、またはその両方を含める必要があります。

よろしくお願いします

4

2 に答える 2

1
  1. 最初の部分では、あなたが何を求めているのか正確にはわかりません - より具体的にして、別の質問をしてください
  2. 2 番目の部分: Excel シートに直接エクスポートする方法はわかりませんが (xls は独自の形式であるため)、データを CSV (カンマ区切り値) ドキュメントとしてエクスポートできます。Googleは 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();    
}

php - ユーザーの PC に CSV ファイルとしてダウンロード プロンプトを強制します。

 <?php

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

        print $_POST['exportdata'];

    ?>

それが役に立てば幸い。

于 2012-12-03T08:46:11.733 に答える
1

これは 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++;
            });

        }
于 2013-05-30T16:31:36.630 に答える