首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在角2中使用SheetJS (js-xlsx)

如何在角2中使用SheetJS (js-xlsx)
EN

Stack Overflow用户
提问于 2016-08-06 12:47:31
回答 6查看 28.1K关注 0票数 5

我正在学习angular2,我想在我的项目中使用js-xlsx库。

我安装了xlsx npm install xlsx和jszip npm install jszip,并将它们添加到我的index.html中。

<script src="node_modules/xlsx/dist/xlsx.core.min.js"></script>

<script src="node_modules/jszip/dist/jszip.min.js"></script>

并添加了打字稿tsd install xlsx

我在利用webpack

但当我用它

代码语言:javascript
复制
import * as xlsx from 'xlsx';

但是我得到了错误的module build failed: error: cannot resolve module 'xlsx'

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2016-08-12 07:40:26

一种更简单的方法是根本不使用类型:

  1. 将xlsx.core.min.js添加到index.html文件中,就像您所做的那样。(我使用的是角-cli,以便将js文件复制到dist/供应商目录中) <script src="vendor/xlsx/dist/xlsx.core.min.js"></script>
  2. 在您的模块中,不要使用import,而是在imports块下声明XLSX。 declare var XLSX: any;

如果使用的是角-cli,则需要将xlsx添加到角-cli-build.js文件中。

代码语言:javascript
复制
module.exports = function(defaults) {
  return new Angular2App(defaults, {
    vendorNpmFiles: [
      'systemjs/dist/system-polyfills.js',
      'systemjs/dist/system.src.js',
      'zone.js/dist/**/*.+(js|js.map)',
      'es6-shim/es6-shim.js',
      'reflect-metadata/**/*.+(ts|js|js.map)',
      'rxjs/**/*.+(js|js.map)',
      '@angular/**/*.+(js|js.map)',
      'moment/moment.js',
       ....
      'xlsx/**/*.+(js|js.map)'
    ]})
};
票数 6
EN

Stack Overflow用户

发布于 2017-06-26 18:21:03

以下是使用js在角2/4上从对象数组导出xlsx文件的工作组件:

代码语言:javascript
复制
import { Component, OnInit } from '@angular/core';

import { utils, write, WorkBook } from 'xlsx';

import { saveAs } from 'file-saver';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
  title = 'app';
  table = [
    {
      First: 'one',
      Second: 'two',
      Third: 'three',
      Forth: 'four',
      Fifth: 'five'
    },
    {
      First: 'un',
      Second: 'deux',
      Third: 'trois',
      Forth: 'quatre',
      Fifth: 'cinq'
    },
  ];

  ngOnInit() {
    const ws_name = 'SomeSheet';
    const wb: WorkBook = { SheetNames: [], Sheets: {} };
    const ws: any = utils.json_to_sheet(this.table);
    wb.SheetNames.push(ws_name);
    wb.Sheets[ws_name] = ws;
    const wbout = write(wb, { bookType: 'xlsx', bookSST: true, type: 
'binary' });

function s2ab(s) {
  const buf = new ArrayBuffer(s.length);
  const view = new Uint8Array(buf);
  for (let i = 0; i !== s.length; ++i) {
    view[i] = s.charCodeAt(i) & 0xFF;
  };
  return buf;
}

saveAs(new Blob([s2ab(wbout)], { type: 'application/octet-stream' }), 'exported.xlsx');
  }
}

您必须安装xlsx和文件保护程序才能工作。

对于从Angular2/4上的jsons数组导出xlsx文件的工作示例:

https://github.com/bogdancar/xlsx-json-to-xlsx-demo-Angular2

票数 8
EN

Stack Overflow用户

发布于 2017-02-14 08:54:07

试用特克斯,使用起来很简单

npm install --save ts-xlsx

然后安装打字机

npm install --save @types/xlsx

代码语言:javascript
复制
/* You can use as namespace: */
import * as XLSX from 'ts-xlsx';
let wb: XLSX.IWorkBook = XLSX.read(...)

/* Or straight forward import */
import { read, IWorkBook } from 'ts-xlsx';
let wb: IWorkBook = read(...)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38804454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档