web在线查看服务器的Excel文件

项目里有个需求要在线查看服务端的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

posted @ 2020-04-28 12:17  wuyong360  阅读(869)  评论(0编辑  收藏  举报