700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 纯js前端导出Excel表格(Excel科学计数法问题)

纯js前端导出Excel表格(Excel科学计数法问题)

时间:2023-08-12 12:41:51

相关推荐

纯js前端导出Excel表格(Excel科学计数法问题)

async goExport() {console.log(this.selection);let str ="行号,工号,姓名,身份证号,事业部,部门,科,区/组,职务,员工类型,员工来源,入职日期,离职日期," +"考核表已发,考核表已回收,已签合同,到期日期,合同开始日期,合同结束日期,签订次数\n";for (let i = 0; i < this.selection.length; i++) {// str += i.toString() + ",1234567890123456789\t,张三李四王五赵六,bbbb,\n";str +=(i + 1).toString() +"," +this.selection[i].employee_number +"," +this.selection[i].name +"," +"\t" +this.selection[i].identity_number.toString() +"," +this.selection[i].department +"," +this.selection[i].group +"," +this.selection[i].station +"," +this.selection[i].class_ban +"," +this.selection[i].job +"," +this.selection[i].employee_category +"," +this.selection[i].staff_source +"," +this.selection[i].entry_date +"," +this.selection[i].leave_date +"," +this.selection[i].oa_requestid +"," +this.selection[i].oa_status +"," +this.selection[i].is_sign +"," +this.selection[i].expire_date +"," +this.selection[i].from_date +"," +this.selection[i].end_date +"," +this.selection[i].sign_times +"," +"\n";}let blob = new Blob([str], {type: "text/plain;charset=utf-8",});//解决中文乱码问题blob = new Blob([String.fromCharCode(0xfeff), blob], {type: blob.type });let object_url;object_url = window.URL.createObjectURL(blob);let link = document.createElement("a");link.href = object_url;link.download = "合同详情.csv";document.body.appendChild(link);link.click();document.body.removeChild(link);},

上面函数为前端js导出Excel表格利用了Blob导出了csv格式的Excel文件其他格式的可以根据type: "text/plain;charset=utf-8"来决定导出格式,导出内容比如身份证号等较长的字段,在Excel打开后会显示科学计数法,导致内容部分丢失,我们可以利用字符串和字段拼在一起的操作来使得Excel的科学计数法默认为字符串而不生效,例如this.selection[i].identity_number.toString()+“,”等,但是会多出不相干的字符,所以为保美观 可以使用“\t”+this.selection[i].identity_number.toString()来操作,“\t”类似于“\n”一样的转义字符,可以被Excel识别,所以可以靠这种来避免科学计数法造成的损失。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。