w1-y2-q5

项目里有个需求要在线查看服务端的Excel文件网上提供的代码不能远程访问服务端的Excel文件,只能同域访问,需要设置IIS跨域。

代码:

function  loadRemoteFile(url) {

this.readWorkbookFromRemoteFile(url, function (workbook) {
    vueApp1.readWorkbook(workbook);
});

},

// 从网络上读取某个excel文件,url必须同域,否则报错

//这里就要在IIS里设置了

function  readWorkbookFromRemoteFile(url, callback) {

// var xhr = new XMLHttpRequest();
var xhr = this.getHttpObj();
xhr.open(\'get\', url, true);
xhr.responseType = \'arraybuffer\';
// response.setHeader("Access-Control-Allow-Origin", "http:localhost:8080/");
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
xhr.onload = function (e) {
    if (xhr.status == 200) {
          var data = new Uint8Array(xhr.response)
         var workbook = XLSX.read(data, { type: \'array\' });
        if (callback) callback(workbook);
    }
};
xhr.send();

}

 

 function   getHttpObj() {

var httpobj = null;
try {
httpobj = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
httpobj = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e1) {
httpobj = new XMLHttpRequest();
}
}
return httpobj;

 }

 

function  readWorkbook: function (workbook) {

var sheetNames = workbook.SheetNames; // 工作表名称集合
var worksheet = workbook.Sheets[sheetNames[0]]; // 这里我们只读取第一张sheet

var csvcc = XLSX.utils.sheet_to_csv(worksheet);   //手动调的布局,也可以用sheet_to_html直接生成html的table,如果列文字多显示不美观
$("#excelPdf").css("overflow-x", "visible");
$("#excelPdf").html(this.sheetHtml(csvcc));

}

 

 function  csv2table: function (csv) { 

var html=\'\';
var first = true;
var rows = csv.split(\'\n\');
rows.pop(); // 最后一行没用的
rows.forEach(function (row, idx) {
var columns = row.split(\',\');
var blank = columns.filter(c=>c == "");
var len = columns.filter(c=> {
let blen= vueApp1.getBLen(c);
return blen > 12;
});

if (blank.length > 2 && len.length>0) {
if (!first) html += \'</table>\';
html += \'<p>\';
columns.forEach(function (column) {
html += \'<span style="padding-right:15px;">\' + column + \'</span>\';
});
html += \'</p>\';
}
else {
if (first) html += \'<table>\'
first = false;

html += \'<tr>\';
columns.forEach(function (column) {
html += \'<td style="padding-right:15px;">\' + column + \'</td>\';
});
html += \'</tr>\';
}
});

return html;
}


function  getBLen(str) { //把双字节的替换成两个单字节的然后再获得长度
if (str == null) return 0;
if (typeof str != "string"){
str += "";
}
return str.replace(/[^\x00-\xff]/g,"01").length;
}

 

//调用

loadRemoteFile("http://localhost:18071//Book1.xlsx");

 web查看Excel具体代码路径---------http://blog.haoji.me/js-excel.html

IIS跨域配置-------https://blog.csdn.net/changhong_sd/article/details/103693148

 

 欢迎指教:17718905918

分类:

技术点:

相关文章: