国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

如何使用s-xlsx實現Excel文件導入和導出(上)

來源:懂視網 責編:小采 時間:2020-11-27 20:01:24
文檔

如何使用s-xlsx實現Excel文件導入和導出(上)

如何使用s-xlsx實現Excel文件導入和導出(上):這次給大家帶來如何使用s-xlsx實現Excel文件導入和導出,使用s-xlsx實現Excel文件導入和導出的注意事項有哪些,下面就是實戰案例,一起來看一下。導入功能實現下載js-xlsx到dist復制出xlsx.full.min.js引入到頁面中然后通過FileReader對象讀取文件
推薦度:
導讀如何使用s-xlsx實現Excel文件導入和導出(上):這次給大家帶來如何使用s-xlsx實現Excel文件導入和導出,使用s-xlsx實現Excel文件導入和導出的注意事項有哪些,下面就是實戰案例,一起來看一下。導入功能實現下載js-xlsx到dist復制出xlsx.full.min.js引入到頁面中然后通過FileReader對象讀取文件

這次給大家帶來如何使用s-xlsx實現Excel文件導入和導出,使用s-xlsx實現Excel文件導入和導出的注意事項有哪些,下面就是實戰案例,一起來看一下。

導入功能實現

下載js-xlsx到dist復制出xlsx.full.min.js引入到頁面中
然后通過FileReader對象讀取文件利用js-xlsx轉成json數據
代碼實現(==>示例<==)

<!DOCTYPE html><html>
 <head>
 <meta charset="UTF-8">
 <title></title>
 <script src="http://oss.sheetjs.com/js-xlsx/xlsx.full.min.js"></script>
 </head>
 <body>
 <input type="file"onchange="importf(this)" />
 <p id="demo"></p>
 <script>
 /*
 FileReader共有4種讀取方法:
 1.readAsArrayBuffer(file):將文件讀取為ArrayBuffer。
 2.readAsBinaryString(file):將文件讀取為二進制字符串
 3.readAsDataURL(file):將文件讀取為Data URL
 4.readAsText(file, [encoding]):將文件讀取為文本,encoding缺省值為'UTF-8'
 */
 var wb;//讀取完成的數據
 var rABS = false; //是否將文件讀取為二進制字符串
 function importf(obj) {//導入
 if(!obj.files) { return;
 } var f = obj.files[0]; var reader = new FileReader();
 reader.onload = function(e) { var data = e.target.result; if(rABS) {
 wb = XLSX.read(btoa(fixdata(data)), {//手動轉化
 type: 'base64'
 });
 } else {
 wb = XLSX.read(data, { type: 'binary'
 });
 } //wb.SheetNames[0]是獲取Sheets中第一個Sheet的名字
 //wb.Sheets[Sheet名]獲取第一個Sheet的數據
 document.getElementById("demo").innerHTML= JSON.stringify( XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]) );
 }; if(rABS) {
 reader.readAsArrayBuffer(f);
 } else {
 reader.readAsBinaryString(f);
 }
 } function fixdata(data) { //文件流轉BinaryString
 var o = "",
 l = 0,
 w = 10240; for(; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
 o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w))); return o;
 } </script>
 </body></html>

2.導出功能的實現

同樣引入js-xlsx
代碼實現(==>示例<==)

<!DOCTYPE html><html><head>
 <meta charset="UTF-8">
 <title></title>
 <script src="http://oss.sheetjs.com/js-xlsx/xlsx.full.min.js"></script></head><body>
 <button onclick="downloadExl(jsono)">導出</button>
 <!--
 以下a標簽不需要內容
 -->
 <a href="" download="這里是下載的文件名.xlsx" id="hf"></a>
 <script>
 var jsono = [{ //測試數據
 "保質期臨期預警(天)": "adventLifecycle", "商品標題": "title", "建議零售價": "defaultPrice", "高(cm)": "height", "商品描述": "Description", "保質期禁售(天)": "lockupLifecycle", "商品名稱": "skuName", "商品簡介": "brief", "寬(cm)": "width", "阿達": "asdz", "貨號": "goodsNo", "商品條碼": "skuNo", "商品品牌": "brand", "凈容積(cm^3)": "netVolume", "是否保質期管理": "isShelfLifeMgmt", "是否串號管理": "isSNMgmt", "商品顏色": "color", "尺碼": "size", "是否批次管理": "isBatchMgmt", "商品編號": "skuCode", "商品簡稱": "shortName", "毛重(g)": "grossWeight", "長(cm)": "length", "英文名稱": "englishName", "凈重(g)": "netWeight", "商品分類": "categoryId", "這里超過了": 1111.0, "保質期(天)": "expDate"
 }]; var tmpDown; //導出的二進制對象
 function downloadExl(json, type) { var tmpdata = json[0];
 json.unshift({}); var keyMap = []; //獲取keys
 //keyMap =Object.keys(json[0]);
 for (var k in tmpdata) {
 keyMap.push(k);
 json[0][k] = k;
 } var tmpdata = [];//用來保存轉換好的json 
 json.map((v, i) => keyMap.map((k, j) => Object.assign({}, { v: v[k], position: (j > 25 ? getCharCol(j) : String.fromCharCode(65 + j)) + (i + 1)
 }))).reduce((prev, next) => prev.concat(next)).forEach((v, i) => tmpdata[v.position] = { v: v.v
 }); var outputPos = Object.keys(tmpdata); //設置區域,比如表格從A1到D10
 var tmpWB = { SheetNames: ['mySheet'], //保存的表標題
 Sheets: { 'mySheet': Object.assign({},
 tmpdata, //內容
 { '!ref': outputPos[0] + ':' + outputPos[outputPos.length - 1] //設置填充區域
 })
 }
 };
 tmpDown = new Blob([s2ab(XLSX.write(tmpWB, 
 {bookType: (type == undefined ? 'xlsx':type),bookSST: false, type: 'binary'}//這里的數據是用來定義導出的格式類型
 ))], { type: ""
 }); //創建二進制對象寫入轉換好的字節流
 var href = URL.createObjectURL(tmpDown); //創建對象超鏈接
 document.getElementById("hf").href = href; //綁定a標簽
 document.getElementById("hf").click(); //模擬點擊實現下載
 setTimeout(function() { //延時釋放
 URL.revokeObjectURL(tmpDown); //用URL.revokeObjectURL()來釋放這個object URL
 }, 100);
 } function s2ab(s) { //字符串轉字符流
 var buf = new ArrayBuffer(s.length); var view = new Uint8Array(buf); for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; return buf;
 } // 將指定的自然數轉換為26進制表示。映射關系:[0-25] -> [A-Z]。
 function getCharCol(n) { let temCol = '',
 s = '',
 m = 0
 while (n > 0) {
 m = n % 26 + 1
 s = String.fromCharCode(m + 64) + s
 n = (n - m) / 26
 } return s
 } </script></body></html>

3.使用Python將excel轉成Json創建測試數據

代碼

import sysimport xlrdimport json 
file =sys.argv[1] 
data = xlrd.open_workbook(file)
table=data.sheets()[0]def haveNoIndex(table):
 returnData=[]
 keyMap=table.row_values(0) 
 for i in range(table.nrows):#row
 tmpmp={}
 tmpInd=0
 for k in table.row_values(i): 
 tmpmp[keyMap[tmpInd]]=k
 tmpInd=tmpInd+1 
 returnData.append(tmpmp); return json.dumps(returnData,ensure_ascii=False,indent=2)
returnJson= haveNoIndex(table) 
fp = open(file+".json","w",encoding='utf-8')
fp.write(returnJson)
fp.close()

導出示例的測試數據已經含有表頭了如果沒有表頭可以直接將json中的遍歷第一條數據的key創建一個value=key({key:key})插入到json第一條就可以了

相信看了本文案例你已經掌握了方法,更多精彩請關注Gxl網其它相關文章!

相關閱讀:

用nodejs做簡介的網站

Vue如何添加element UI的組件

如何在移動端做出1px邊框的效果

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

如何使用s-xlsx實現Excel文件導入和導出(上)

如何使用s-xlsx實現Excel文件導入和導出(上):這次給大家帶來如何使用s-xlsx實現Excel文件導入和導出,使用s-xlsx實現Excel文件導入和導出的注意事項有哪些,下面就是實戰案例,一起來看一下。導入功能實現下載js-xlsx到dist復制出xlsx.full.min.js引入到頁面中然后通過FileReader對象讀取文件
推薦度:
標簽: 文件 利用 導出
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 日韩国产在线播放 | 中文字幕一区二区三区久久网站 | 免费在线观看亚洲 | 91中文字幕网| 亚洲韩国日本欧美一区二区三区 | 国产精品免费视频播放 | 高清亚洲| 国产精品综合一区二区 | 一级一级特黄女人精品毛片视频 | 国产欧美在线视频免费 | 国内精品久久久久久久97牛牛 | 在线欧美日韩 | 亚洲欧美一区二区三区孕妇 | 国产在线看不卡一区二区 | 久久精品日日躁夜夜躁欧美 | 99视频九九精品视频在线观看 | 亚洲一区综合 | 激情综合网激情 | 国产不卡在线看 | 亚洲欧美日韩激情在线观看 | 欧美日韩国 | 在线中文 | 欧美亚洲天堂 | 久久亚洲精品国产精品婷婷 | 日b毛片 | 亚洲欧美国产另类 | 成人国产一区二区三区精品 | 91一区二区在线观看精品 | 国产精品一区二区久久精品 | 免费观看a黄一级视频 | 久久er | 成人爽a毛片在线视频 | 日韩视频亚洲 | 久久久一区二区三区不卡 | 91精品国产免费久久久久久 | 免费看欧美日韩一区二区三区 | 亚洲 欧美 日韩在线 | 一区亚洲 | 欧美三级自拍 | 99久久综合国产精品免费 | 欧美日韩ay在线观看 |