Javascript 如何将返回的JSON提取到excel工作表
我使用以下方法调用返回JSON的web API:-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
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);
});
}
上面的工作正常,但我需要实现一个新功能,其中我需要添加以下内容:-
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++;
});
}