js导出的xlsx无法打开_使用FileSaver、js-xlsx实现excel导出
需要将页面上的表格内容导出成excel格式。
使用了FileSaver、js-xlsx的前端插件。
files: [
vendor_path('file-saver/FileSaver.min.js'),
vendor_path('js-xlsx/dist/xlsx.core.min.js'),
]
FileSaver、js-xlsx的github,支持的版本类型,和使用方法。
js-xlsx:
datenum = (v, date1904) ->
if date1904
v += 1462
epoch = Date.parse(v)
return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000)
sheetFromArrayOfArrays = (data) ->
ws =
# 设置每一列的宽度(12个字符)
'!cols': ({wch: 12} for i in _.range(data[0].length))
range =
s:
c: 10000000
r: 10000000
e:
c: 0
r: 0
R = 0
while R != data.length
C = 0
while C != data[R].length
if range.s.r > R
range.s.r = R
if range.s.c > C
range.s.c = C
if range.e.r < R
range.e.r = R
if range.e.c < C
range.e.c = C
cell = v: data[R][C]
if cell.v == null
++C
continue
cell_ref = XLSX.utils.encode_cell(
c: C
r: R)
if typeof cell.v == 'number'
cell.t = 'n'
else if typeof cell.v == 'boolean'
cell.t = 'b'
else if cell.v instanceof Date
cell.t = 'n'
cell.z = XLSX.SSF._table[14]
cell.v = datenum(cell.v)
else
cell.t = 's'
ws[cell_ref] = cell
++C
++R
if range.s.c < 10000000
ws['!ref'] = XLSX.utils.encode_range(range)
return ws
s2ab = (s) ->
buf = new ArrayBuffer(s.length)
view = new Uint8Array(buf)
for i in _.range(s.length)
view[i] = s.charCodeAt(i) & 0xFF
return buf
FileSaver:
filename = "ge.xlsx"
wb =
SheetNames: []
Sheets: {}
ws = sheetFromArrayOfArrays(data)
sheet_name = "ge"
wb.SheetNames.push sheet_name
wb.Sheets[sheet_name] = ws
if wb.SheetNames.length == 0
return showErr()
wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: true, type: 'binary'})
saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), filename)
js导出的xlsx无法打开_使用FileSaver、js-xlsx实现excel导出相关推荐
- js下载文件,javascript下载文件,FileSaver.js,页面元素保存成文件
js下载文件,javascript下载文件,FileSaver.js,页面元素保存成文件 ================================ ©Copyright 蕃薯耀 2020-07 ...
- js如何实现扫描身份证识别_通过node.js来调取baidu-aip-SDK实现身份证识别的功能...
这篇文章主要介绍了关于通过node.js来调取baidu-aip-SDK实现身份证识别的功能,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 最近项目中客户需要实现身份证识别功能,合理计 ...
- 注册登录页面代码用js判断是否填入信息_(实战)Node.js 实现抢票小工具amp;短信通知提醒...
作者:西岚 https://juejin.im/post/5dadd0236fb9a04de04d968e 写在前言 要知道在深圳上班是非常痛苦的事情,特别是我上班的科兴科技园这一块,去的人非常多,每 ...
- double 导出txt保留两位_使用Jade“精修”XRD图谱并导出数据
写在最前:使用Jade标定XRD是材料科学研究中的基本数据处理操作,这里就不再提及了,还没有掌握的小伙伴们可以自行百度教程,基本上大同小异.本文仅为一家之言,如有错误还望轻拍. 这里推荐一个Jade ...
- npoi xlsx 文件损坏_解决右键新建xlsx文件错误
问题发现 近日在使用Windows文件资源管理器,右键新建 XLSX 工作表 ,打开文件,EXCEL报错 Excel 无法打开文件 "***.xlsx", 因为文件格式或文件扩展名 ...
- js获取request中的值_基于node.js的开发框架 — Koa
一.简介 Koa 基于nodeJs平台的下一代web开发框架,由 Express 幕后的原班人马打造,致力于成为一个更小.更富有表现力.更健壮的 Web 框架.使用 koa 编写 web 应用,通过组 ...
- 注册登录页面代码用js判断是否填入信息_(实战)Node.js 实现抢票小工具amp;amp;短信通知提醒...
作者:西岚 本文经作者 @西岚 授权分享,文末点击阅读原文可跳转原文查看. 写在前言 要知道在深圳上班是非常痛苦的事情,特别是我上班的科兴科技园这一块,去的人非常多,每天上班跟春运一样,如果我能换到以 ...
- js清空文本框的值_一个Vue.js实例控制字变大变小,含样式操作,flex布局。「603」...
这是一个用vue.js对css操作完成的实例. 当然用了flex简单布局. 一.先创建一个html文件,记得添加vue库文件. 二.创建一盒容器vmdiv,用vue绑定它,测试vue绑定后的插入值te ...
- js函数提升和变量提升_关于在js中提升的真相
js函数提升和变量提升 Earlier this week I was preparing to give a tech talk about some foundational JavaScript ...
最新文章
- android 加载列表占位,使用Glide从URL加载占位符以在加载GIF时显示(Android)
- 学python可以做什么知乎-学完Python后能做什么?
- nothing comes free
- DIscuz论坛上传附件2M限制修改
- linux 64位兼容32位,linux的64位操作系统对32位程序的兼容-全面分析
- 【echart数组数据】echarts两条或两条以上x轴不同的线合并x轴 含有不连续数据
- AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas
- 7-3 最小生成树-kruskal (10 分)(思路+详解+并查集详解+段错误超时解决)宝 Come
- 爬虫那些事儿-- 简介
- 喂,你经历过两三年前的前端开发吗?
- fileziller 恢复 站点管理器 内的ftp帐号方法
- 计算机c盘小了,电脑的C盘内存太小,怎么办?
- 教师资格证面试试讲需要注意什么?
- 单片机c语言延时30s程序,单片机C语言的延时程序
- 在线生成安卓签名证书
- Microsoft Visio 文本框上标或下标
- 基于Android的高德地图的定位和运动轨迹记录的功能
- 【前端知识之webpack】Loader和Plugin都是什么,有什么区别
- 关于对信号归一化后的频谱“消失”问题
- Windows11 安装教程(Ultraiso-制作启动盘)