读取表格的内容时,空的那列值没有显示出来,如何往里面添加数值

享有盛誉之名 移动端测试工程师  2020-11-12 11:35:52
这个该怎实现?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那列为空,打印时顺便打印出来,而且往空的输入一些数值(不重复的随机数),现在就是部知道怎么插入?
...全文
11843 点赞 收藏 4
写回复
4 条回复
享有盛誉之名 2020年11月12日
就是不知道该怎么加! 把这个代码加不进去,还是那样子。[{"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>奥特曼部门</t>", "h": "奥特曼部门", "w": "奥特曼部门" }, "B3": { "t": "s", "v": "超人部门", "r": "<t>超人部门</t>", "h": "超人部门", "w": "超人部门" } }, "Sheet2": {}, "Sheet3": {} }
回复 点赞
泡泡鱼_ 2020年11月12日
引用 2 楼 享有盛誉之名 的回复:
是的,打印出来就是那样子,就是没有DepartID的,不知道怎么加进去。 最终想要的结果是 [{"DepartID":"1111","DepartName":"奥特曼部"},{"DepartID":"2222","DepartName":"超人部"}]
自己加呀。类似于下面……
for(const depart in newData){
if(!depart.DepartID){
depart.DepartID='11111'
}
}
回复 点赞
享有盛誉之名 2020年11月12日
是的,打印出来就是那样子,就是没有DepartID的,不知道怎么加进去。 最终想要的结果是 [{"DepartID":"1111","DepartName":"奥特曼部"},{"DepartID":"2222","DepartName":"超人部"}]
回复 点赞
泡泡鱼_ 2020年11月12日
没用过你那个插件。 const newData=……; 打印newData看看是什么样子,如果是{"DepartName":"奥特曼部"}这样子的。那你可以通过判断没有DepartID属性,然后再去额外附加上DepartID
回复 点赞
发动态
发帖子
JavaScript
创建于2007-09-28

5.1w+

社区成员

22.3w+

社区内容

Web 开发 JavaScript
社区公告
暂无公告