最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript導出csv文件(excel)的方法示例

 更新時間:2019年08月25日 10:29:44   作者:楊冠標  
這篇文章主要給大家介紹了關于javascript導出csv文件(excel)的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用javascript具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

這里貼出JavaScript導出csv文件(excel)的代碼。

/**
 * 導出excel
 * @param {Object} title  標題列key-val
 * @param {Object} data   值列key-val
 * @param {Object} fileName  文件名稱
 */
function JSONToExcelConvertor(title, data, fileName) {
 var CSV = '';
 var row = "";

 for (var i = 0; i < title.length; i++) {
  if(title[i].title){
   row += title[i].title + ',';
  }
 }
 row = row.slice(0, -1);
 CSV += row + '\r\n';

 for (var i = 0; i < data.length; i++) {
  var row = "";
  for (var j = 0; j < title.length; j++) {
   if(title[j].title){
    row += '"' + (data[i][title[j].field] ? data[i][title[j].field] : "") + '"\t,';
   }
  }
  row.slice(0, row.length - 1);
  CSV += row + '\r\n';
 }

 if (CSV == '') {
  alert("Invalid data");
  return;
 }

 var fileName = fileName;
 var uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURI(CSV);
 var link = document.createElement("a");
 link.href = uri;

 link.style = "visibility:hidden";
 link.download = fileName + ".csv";
 document.body.appendChild(link);
 link.click();
 document.body.removeChild(link);
}

上面的寫法,如果excel中的數(shù)據(jù)太多,就會導致無法導出的結果,原因是瀏覽器對URL的長度有限制,因此要使用Blob對象和window.URL.createObjectURL()方法做一下改造。

window.URL.createObjectURL()方法可以直接生成blob:開頭的鏈接,該鏈接產(chǎn)生于瀏覽器端,不會占用服務器資源。

/**
 * 導出excel
 * @param {Object} title  標題列key-val
 * @param {Object} data   值列key-val
 * @param {Object} fileName  文件名稱
 */
function JSONToExcelConvertor(title, data, fileName) {
 var CSV = '';
 var row = "";

 for (var i = 0; i < title.length; i++) {
  if(title[i].title){
   row += title[i].title + ',';
  }
 }
 row = row.slice(0, -1);
 CSV += row + '\r\n';

 for (var i = 0; i < data.length; i++) {
  var row = "";
  for (var j = 0; j < title.length; j++) {
   if(title[j].title){
    row += '"' + (data[i][title[j].field] ? data[i][title[j].field] : "") + '"\t,';
   }
  }
  row.slice(0, row.length - 1);
  CSV += row + '\r\n';
 }

 if (CSV == '') {
  alert("Invalid data");
  return;
 }

 var fileName = fileName;
 var uri = new Blob(['\ufeff' + CSV], {type:"text/csv"});
 var link = document.createElement("a");
 link.href = URL.createObjectURL(uri);

 link.style = "visibility:hidden";
 link.download = fileName + ".csv";
 document.body.appendChild(link);
 link.click();
 document.body.removeChild(link);
}

然而,雖然window.URL.createObjectURL()方法在IE10、 IE11以及Microsoft Edge中能生成的blob:鏈接,但是卻不能把它加到一個<a>節(jié)點上,也不能直接在瀏覽器地址欄打開訪問,否則會得到【SCRIPT5:拒絕訪問?!垮e誤。甚至,IE9根本不支持調(diào)用window.URL.createObjectURL()方法創(chuàng)建Blob URLs。

Microsoft Internet Explorer / Microsoft Edge和高大上的Google Chrome / Mozilla Firefox對于window.URL.createObjectURL()方法創(chuàng)建Blob鏈接最直觀的區(qū)別在于得到的blob:鏈接形式不一樣,分別在微軟瀏覽器和標準瀏覽器中運行new Blob()代碼,會得到兩種Blob鏈接形式,第一種為chrome和firefox生成的帶有當前域名的標準blob:鏈接形式,第二種為Microsoft IE和Microsoft Edge生成的不帶域名的blob:鏈接。那么我們就可以通過window.URL.createObjectURL(new Blob()) . indexOf(location.host) < 0表達式來檢測是否是IE或早期生成Object URL不帶域名的Edge,如果表達式返回true則是IE或Edge舊版本。

事實上,Blob URL不被支持是出于IE瀏覽器對安全性的考慮(IE瀏覽器真安全啊,牛逼),然后它自己提供了一套API用來創(chuàng)建或下載Blob文件:msSaveOrOpenBlob。

/**
 * 導出excel
 * @param {Object} title  標題列key-val
 * @param {Object} data   值列key-val
 * @param {Object} fileName  文件名稱
 */
function JSONToExcelConvertor(title, data, fileName) {
 var CSV = '';
 var row = "";

 for (var i = 0; i < title.length; i++) {
  if(title[i].title){
   row += title[i].title + ',';
  }
 }
 row = row.slice(0, -1);
 CSV += row + '\r\n';

 for (var i = 0; i < data.length; i++) {
  var row = "";
  for (var j = 0; j < title.length; j++) {
   if(title[j].title){
    row += '"' + (data[i][title[j].field] ? data[i][title[j].field] : "") + '"\t,';
   }
  }
  row.slice(0, row.length - 1);
  CSV += row + '\r\n';
 }

 if (CSV == '') {
  alert("Invalid data");
  return;
 }

 var fileName = fileName;
 var uri = new Blob(['\ufeff' + CSV], {type:"text/csv"});

 if (window.navigator && window.navigator.msSaveOrOpenBlob) { // for IE
  window.navigator.msSaveOrOpenBlob(CSV, fileName + ".csv");
 } else { // for Non-IE(chrome、firefox etc.)
  var link = document.createElement("a");
  link.href = URL.createObjectURL(uri);

  link.style = "visibility:hidden";
  link.download = fileName + ".csv";
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
 }
}

因此就得出上面最終的代碼。

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

相關文章

  • 詳細聊聊JavaScript是如何影響DOM樹構建的

    詳細聊聊JavaScript是如何影響DOM樹構建的

    DOM (Document Object Model) 的全稱是文檔對象模型,它可以以一種獨立于平臺和語言的方式訪問和修改一個文檔的內(nèi)容和結構,這篇文章主要給大家介紹了關于JavaScript是如何影響DOM樹構建的相關資料,需要的朋友可以參考下
    2021-08-08
  • BootStrap 獲得輪播中的索引和當前活動的焦點對象

    BootStrap 獲得輪播中的索引和當前活動的焦點對象

    這篇文章主要介紹了BootStrap 獲得輪播中的索引和當前活動的焦點對象,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2017-05-05
  • js DOM模型操作

    js DOM模型操作

    文檔對象模型DOM(Document Object Module)定義了用戶操作文檔對象的接口,它使得用戶對HTML有了空前的訪問能力,并使開發(fā)者能將HTML作為XML文檔來處理。
    2009-12-12
  • 微信小程序繪制半圓(弧形)進度條

    微信小程序繪制半圓(弧形)進度條

    這篇文章主要為大家詳細介紹了微信小程序繪制半圓(弧形)進度條,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • js+canvas實現(xiàn)圖片格式webp/png/jpeg在線轉換

    js+canvas實現(xiàn)圖片格式webp/png/jpeg在線轉換

    這篇文章主要介紹了js+canvas實現(xiàn)圖片格式webp/png/jpeg在線轉換,需要的朋友可以參考下
    2020-08-08
  • 微信小程序服務器日期格式化問題

    微信小程序服務器日期格式化問題

    一般服務器獲取到日期都是中國標準時間,需要對其進行格式化,這篇文章主要介紹了微信小程序服務器日期格式化問題,需要的朋友可以參考下
    2020-01-01
  • 詳解ant-design-pro使用qiankun微服務

    詳解ant-design-pro使用qiankun微服務

    這篇文章主要介紹了ant-design-pro使用qiankun微服務詳解,其實微服務需要有主應用和子應用,?一個子應用可以配置多個相關聯(lián)的主應用,配置方法都是一樣的,對ant-design-pro微服務配置相關知識,感興趣的朋友一起看看吧
    2022-03-03
  • js帶按鈕的提示框可供選擇示例代碼

    js帶按鈕的提示框可供選擇示例代碼

    本文為大家介紹下使用js實現(xiàn)可以供選擇的彈出框,具體的實現(xiàn)如下,感性的朋友可以參考下,希望對大家學習有所幫助
    2013-09-09
  • 純js實現(xiàn)輪播圖效果

    純js實現(xiàn)輪播圖效果

    這篇文章主要為大家詳細介紹了純js實現(xiàn)輪播圖效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • uni-file-picker文件選擇上傳功能實現(xiàn)代碼

    uni-file-picker文件選擇上傳功能實現(xiàn)代碼

    本文介紹了uni-file-picker的基礎使用方法,包括選擇圖片的九宮格樣式、限制選擇的圖片數(shù)量、指定圖片類型及后綴,以及如何自定義上傳時機,詳細說明了如何通過設置不同的屬性來實現(xiàn)圖片的選擇和上傳,適用于需要在應用中上傳圖片的開發(fā)者
    2024-09-09

最新評論

滁州市| 长武县| 金昌市| 临泽县| 天水市| 贵定县| 新丰县| 镇远县| 大同市| 高阳县| 嘉定区| 木兰县| 克山县| 大连市| 巍山| 宁德市| 三门县| 赣州市| 化州市| 雷山县| 太和县| 外汇| 乌拉特中旗| 年辖:市辖区| 闽清县| 盘山县| 美姑县| 邯郸市| 漯河市| 汉中市| 青州市| 敖汉旗| 湘乡市| 梁河县| 甘洛县| 涿州市| 平阴县| 洪湖市| 雷波县| 江口县| 九江县|