這個該怎實作?js獲取excel表格內容的
const result = [];
/* 讀取上傳的表格*/
//首先監聽input框的變動,選中一個新的檔案會觸發change事件
document.querySelector("#fileid").addEventListener("change", function () {
//獲取到選中的檔案
var file = document.querySelector("#fileid").files[0];
var type = file.name.split('.');
if (type[type.length - 1] !== 'xlsx' && type[type.length - 1] !== 'xls' && type[type.length - 1] !== 'csv') {
alert('只能選擇excel檔案匯入');
return false;
}
const reader = new FileReader();
reader.readAsBinaryString(file);
reader.onload = (e) => {
const data = e.target.result;
const zzexcel = window.XLS.read(data, {
type: 'binary'
});
// const result = [];
console.log("長度"+JSON.stringify(zzexcel))
for (let i = 0; i < zzexcel.SheetNames.length; i++) {
//往表格插入ID號,因為表格的ID空的,查不出來,手動輸入值
/* 生成隨機ID*/
// time2 = (year+month+day+hour+minute+second);
// var suijiId = time2 + Math.ceil(Math.random(9999) * 10000) + 1000;//部門隨機ID
// DepartID.push(suijiId) ;//
const newData = window.XLS.utils.sheet_to_json(zzexcel.Sheets[zzexcel.SheetNames[i]]) ;
result.push(...newData)
console.log("stt"+JSON.stringify(result))
}
biaogebumen=result;//
console.log('result', result)//列印出來的
}
});
有個excel表格大概如下,DepartID這列是空的,但也希望列印處理出來
DepartID DepartName
奧特曼部
超人部
用戶匯出excel表格用js處理列印得到,不知道為何DepartID沒有列印出來:
[{"DepartName":"奧特曼部"},{"DepartName":"超人部"}]
預期是想列印:
[{"DepartID":"","DepartName":"奧特曼部"},{"DepartID":"","DepartName":"超人部"}]
然后寫了一個隨機部重復的id號碼插入DepartID中顯示(最終目的):
[{"DepartID":"1111","DepartName":"奧特曼部"},{"DepartID":"2222","DepartName":"超人部"}]
我的問題就是想說再excel表格中DepartID那列為空,列印時順便列印出來,而且往空的輸入一些數值(不重復的亂數),現在就是部知道怎么插入?
uj5u.com熱心網友回復:
沒用過你那個插件。const newData=https://bbs.csdn.net/topics/……;
列印newData看看是什么樣子,如果是{"DepartName":"奧特曼部"}這樣子的。那你可以通過判斷沒有DepartID屬性,然后再去額外附加上DepartID
uj5u.com熱心網友回復:
是的,列印出來就是那樣子,就是沒有DepartID的,不知道怎么加進去。最終想要的結果是
[{"DepartID":"1111","DepartName":"奧特曼部"},{"DepartID":"2222","DepartName":"超人部"}]
uj5u.com熱心網友回復:
自己加呀。類似于下面……
for(const depart in newData){
if(!depart.DepartID){
depart.DepartID='11111'
}
}
uj5u.com熱心網友回復:
就是不知道該怎么加!把這個代碼加不進去,還是那樣子。[{"DepartName":"奧特曼部門"},{"DepartName":"超人部門"}]
for (let i = 0; i < zzexcel.SheetNames.length; i++) {
const newData = window.XLS.utils.sheet_to_json(zzexcel.Sheets[zzexcel.SheetNames[i]]);
/* 生成隨機ID*/
time2 = (year+month+day+hour+minute+second);
var suijiId = time2 + Math.ceil(Math.random(9999) * 10000) + 1000;//部門隨機ID
for(let i = 0; i < zzexcel.Sheets.length; i++){
if(!depart.DepartID){
depart.DepartID= suijiId;
}
}
result.push(...newData)
console.log("stt"+JSON.stringify(result))
}
biaogebumen=result;//為了下面變更
console.log('result', result)
}
console.log("長度"+JSON.stringify(zzexcel.Sheets));
列印如下(發現就行少了A2,A3這兩個空的單元格,還有A1列印不出來):
{
"Sheet1": {
"!ref": "A1:B3",
"A1": {
"t": "s",
"v": "DepartID",
"r": "<t>DepartID</t>",
"h": "DepartID",
"w": "DepartID"
},
"B1": {
"t": "s",
"v": "DepartName",
"r": "<t>DepartName</t>",
"h": "DepartName",
"w": "DepartName"
},
"B2": {
"t": "s",
"v": "奧特曼部門",
"r": "<t>?¥¥??1???é?¨é?¨</t>",
"h": "奧特曼部門",
"w": "奧特曼部門"
},
"B3": {
"t": "s",
"v": "超人部門",
"r": "<t>è???ooé?¨é?¨</t>",
"h": "超人部門",
"w": "超人部門"
}
},
"Sheet2": {},
"Sheet3": {}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/212991.html
標籤:JavaScript
上一篇:如何在服務器端獲取采集設備的資訊
下一篇:等寬字體的困惑
