javascript - 在 AngularJS 应用程序中使用 XLSX 和 canvas-datagrid 可视化的 Excel 数据的预览在 Chrome 和 IE11 中均未绘制
问题描述
我在我的应用程序中获得了组件,除了从服务器加载一些初始数据 - 进入特定状态时 - 还有两个带有标签“预览文件”和“下载文件”的按钮。第一个按钮应执行以下方法:从服务器下载 .csv 文件 - 作为字节数组发送,因此它将作为 ArrayBuffer 接收 - 然后将其转换为 .xls 电子表格,并应以新的、缩放的、只读窗口。
第二个按钮应该执行:下载相同的文件,以相同的方式并将其转换为.xls后,将其下载到本地磁盘。
.csv 操作由 SheetJS js-XLSX 库管理,数据可视化由 canvas-datagrid 管理。
但是整个可视化步骤不起作用。
这是代码:
previewFile(idx) {
const file = this.files[idx];
const fileName = file.originalFileName;
this.getFile(fileName).then( (data) => {
const arrayBuffer = new Uint8Array(data);
const sheetsObj = this.XLSX.read(arrayBuffer, {type: "array"});
const sheetObj = sheetsObj.Sheets[sheetsObj.SheetNames[0]];
const jsonObj = this.XLSX.utils.sheet_to_json(sheetObj, {header: ["Some header1", "Some header2", "Some header3"], raw: false});
const previewGrid = this.canvasDataGrid();
previewGrid.data = jsonObj;
this.$document[0].getElementById('grid').appendChild(previewGrid);
});
}
此代码下载并转换数据,但在尝试可视化时,它显示黑色画布矩形,带有默认 Chrome 浏览器的崩溃图标:
当我在 Internet Explorer 11 上尝试此操作时,我在开发控制台中收到此错误:
SyntaxError: Syntax error
at Grid (eval code:1:12155)
at window.canvasDatagrid (eval code:1:13638)
at Anonymous function (eval code:198:9)
at processQueue (eval code:16383:11)
at Anonymous function (eval code:16399:27)
at Scope.prototype.$eval (eval code:17682:9)
at Scope.prototype.$digest (eval code:17495:15)
at Scope.prototype.$apply (eval code:17790:13)
at done (eval code:11831:36)
at completeRequest (eval code:12033:7)
但是 canvas-datagrid 的文档说它在 IE11 上运行良好。
我想用“预览按钮”实现的是能够在新窗口中可视化 Excel 电子表格,缩放到 1000 像素 X 1000 像素,只读。
但没有办法不知道该怎么做。文档没有帮助我,看起来我的精神太慢了,无法自己更快地解决这个问题。
任何人都有使用 XLSX 和 canvas-datagrid 的经验并愿意提供帮助吗?
解决方案
推荐阅读
- c# - Asp.Net Core OData 4.0 中 BaseUrl 中的动态路由
- sql - SQL 如果两列值不匹配,则显示所有不匹配的值
- google-places-api - Google 使用基本 SKU 放置自动完成小部件,但仍会收费
- php - 卷曲返回选项
- common-lisp - 无法在 common lisp 中发布松弛的 webhook url
- tibco - 在 Tibco BW 5 中处理多个 SOAP 操作
- python - Minecraft 服务器执行脚本
- react-native - Nativebase 选择器项目未显示选定值
- ms-access - MS-Access 表单 - 基于多个列表框填充输入框
- opengl - 我可以通过只渲染几何两次来执行延迟渲染的 MSAA 吗?