1.webservice接口
[WebMethod]
public string GetHotel()
{
string outData = "";
JavaScriptSerializer jss = new JavaScriptSerializer();
jss.MaxJsonLength = Int32.MaxValue;
List<string> pointarr = new List<string>();
string sql = "select objectid,name,addr from hotel";
DataTable dt = OraHelper.ExecuteDataSet(sql).Tables[0];
for (int i = 0; i < dt.Rows.Count; i++)
{
string objectid = dt.Rows[i]["objectid"].ToString();
string name = dt.Rows[i]["name"].ToString();
string addr = dt.Rows[i]["addr"].ToString();
string hotel = objectid + " " + name + " " + addr;
pointarr.Add(hotel);
}
outData = jss.Serialize(pointarr);
return outData;
}
2.前端ajax请求函数
function tableToExcel() {
$.ajax({
type: "get",
url: "http://localhost/WebApplication2/WebService1.asmx/GetHotel",
success: function (data) {
var data = JSON.parse($(data).text());
let str = `序号,名称,地址\n`;
for (var i = 0; i < data.length; i++) {
var objectid = parseInt(data[i].split(" ")[0])
var name = data[i].split(" ")[1];
var addr = data[i].split(" ")[2];
var obj = {};
obj.objectid = objectid;
obj.name = name;
obj.addr = addr;
for (let item in obj) {
str += `${obj[item] + '\t'},`;
}
str += '\n';
}
//encodeURIComponent解决中文乱码
let uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(str);
//通过创建a标签实现
let link = document.createElement("a");
link.href = uri;
//对下载的文件命名
link.download = "json数据表.csv";
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
});
}
3.调用
<p style="font-size: 15px;font-family:'微软雅黑';color: red;">使用a标签方式将json导出csv文件</p>
<input type="button" id="btExcel" class="button" value="导出excel" onclick="tableToExcel();">
4.结果