标签: js-xlsx

使用客户端JavaScript创建具有几种样式的excel文件(如果可能,使用js-xlsx库)

我想创建一个excel文件(.xlsx格式)并使用Client Side JavaScript使其可供下载.我能够使用js-xlsx库创建一个示例文件.但我无法应用任何样式.至少需要一些基本样式,包括标题的背景颜色,标题的粗体字和单元格的文本换行.

js-xlsx库文档说我们可以使用Cell Object提供样式.

我尝试使用单元格对象给出样式,但它没有反映在下载的.xlsx文件中.我甚至尝试读取.xlsx文件并使用XLSX.write()函数写回相同的文件.但它会返回一个没有样式的excel文件.理想情况下,我希望下载的文件具有相同的上传文件样式.在重新创建的文件中未应用任何字体颜色或背景颜色.我使用Excel 2013测试下载的文件.

请在下面找到上传前后的excel屏幕截图.

原始文件

在此输入图像描述

下载的文件

在此输入图像描述

代码如下.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<script type="text/javascript" src="xlsx.core.min.js"></script>
<script type="text/javascript" src="Blob.js"></script>
<script type="text/javascript" src="FileSaver.js"></script>

<script>

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

/* set up XMLHttpRequest */
var …
Run Code Online (Sandbox Code Playgroud)

javascript excel cordova js-xlsx

13
推荐指数
1
解决办法
2万
查看次数

sheetJS:当您想将毫秒转换为 h:mm 时,单元格对象应该如何显示?

有人知道当您想将一个以毫秒为单位的值转换为 h:mm 的持续时间格式时,单元格对象应该是什么样子吗?

目前我有一个单元格对象,它看起来像 { t: 'n', v: value, z: 'h:mm' } 但它没有显示正确的小时和分钟。

javascript format js-xlsx

13
推荐指数
1
解决办法
145
查看次数

发现 XLSX 软件包漏洞,但没有更新的软件包

我在 js 代码中使用 xlsx。从去年开始就运转良好。今天我开始遇到问题并且构建失败。由于:

\n
$ yarn audit: \n\nyarn audit v1.22.19\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n\xe2\x94\x82 moderate: Prototype Pollution in sheetJS                               \n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n\xe2\x94\x82 Package: xlsx                                                         \n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n\xe2\x94\x82 Patched in: >=0.19.3                                                     \n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n\xe2\x94\x82 Dependency of: xlsx                                                         \n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n\xe2\x94\x82 Path: xlsx                                                         \n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n\xe2\x94\x82 More info: https://www.npmjs.com/advisories/1091817                     \n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n
Run Code Online (Sandbox Code Playgroud)\n

显然,解决方案是升级到版本 0.19.3 或更高版本,但最新版本是 0.18.5,因为:https://www.npmjs.com/package/xlsx?activeTab=readme

\n

有什么办法可以解决这个问题吗?

\n

javascript js-xlsx

9
推荐指数
1
解决办法
1万
查看次数

如何在使用js-xlsx插件生成的excel中添加过滤器

我想在excel列上添加过滤器,这是使用js-xlsx javascript插件从数据数组创建的,但我没有找到任何方法将过滤器添加到表列.

如果有人知道如何在excel中为列添加过滤器,请帮助我

我编写了这段代码来创建工作表对象

function createSheet(data, opts) {
        console.log(data, opts);
        var ws = {};
        var range = {s: {c: 10000000, r: 10000000}, e: {c: 0, r: 0}};
        for (var R = 0; R != data.length; ++R) {
            for (var C = 0; C != data[R].length; ++C) {
                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;
                var cell = {v: data[R][C]}; …
Run Code Online (Sandbox Code Playgroud)

javascript excel js-xlsx

8
推荐指数
1
解决办法
1000
查看次数

如何使用 xlsx npm 包写入特定单元格

我必须向我的 xlsm 文件中的特定单元格(例如 D4 单元格)写入一个值。我可以看到选项

XLSX.writeFile(workbook, 'out.xlsx');
Run Code Online (Sandbox Code Playgroud)

XLSX 包文档中(编写函数)

但是我没有看到任何将值写入特定单元格的内容(需要写入的值应该在哪里传递?)。或者,它不如提供的读取特定单元格值的示例那么清楚。如果有人能给我提供一个简单的代码片段示例,我会很高兴。

这是我读取特定单元格值的方式:

if(typeof require !== 'undefined') XLSX = require('C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\xlsx');
var workbook = XLSX.readFile('xlsm');
var first_sheet_name = workbook.SheetNames[0];
var address_of_cell = 'D5';
var worksheet = workbook.Sheets[first_sheet_name];
var desired_cell = worksheet[address_of_cell];
desired_value = (desired_cell ? desired_cell.v : undefined);
console.log('Cell Value is: '+ desired_value);
Run Code Online (Sandbox Code Playgroud)

npm jasmine protractor js-xlsx sheetjs

8
推荐指数
2
解决办法
1万
查看次数

在 XLSX.utils.json_to_sheet 中使用标头选项时,标头不会覆盖

我试图通过将标题数组传递给选项来更改标题标题,但它不会覆盖标题。相反,它会在原始数据之前插入新的标头。我传递了相同数量的标题。

这是我的代码:

const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet(
  json,
  {header: headerColumns}
);

const wb: XLSX.WorkBook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, 'Transactions');
const excelBuffer: any = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });

this.saveAsExcelFile(excelBuffer, excelFileName);
Run Code Online (Sandbox Code Playgroud)

输出如下所示:

在此输入图像描述

js-xlsx

7
推荐指数
1
解决办法
5万
查看次数

将工作表添加到本地工作簿 (js-xlsx)

(我使用这个页面https://github.com/SheetJS/js-xlsx作为我的 chrome 扩展。)

我在将工作表添加到本地工作簿时遇到问题。

我想用页面中的数据创建一个工作表,解析数据并将其保存到工作表中。此工作表应存储在已具有工作表的本地工作簿中。

目前我每次都创建一个新的工作簿,并且只保存在工作表上。这是用于创建工作表、将其添加到工作簿和下载工作簿的示例工作代码部分。

var title = "test";
var url = "xyz";

var data = [
    {"A": "Title", "B": title},
    {"A": "URL", "B": url},
  ];

var ws = XLSX.utils.json_to_sheet(data, {skipHeader:true});

var wb = XLSX.utils.book_new();

//Only 31 available characters at the name of the worksheet
while(title.length >= 32){
  title = title.substr(0, title.length-1);
}
var ws_name = title;

// Add the worksheet to the workbook 
XLSX.utils.book_append_sheet(wb, ws, ws_name);

//create and downloading workbook
XLSX.writeFile(wb, 'test.xlsx');
Run Code Online (Sandbox Code Playgroud)

如果有人知道将创建的工作表添加到现有的本地 xlsx 文件是如何工作的,我会很高兴。

javascript excel xlsx js-xlsx

6
推荐指数
0
解决办法
2573
查看次数

构建angular 6应用时出现xlsx样式错误

xlsx-style通过yarn 安装在我的angular 6应用程序中,errors当我构建应用程序时得到了:

ERROR in ../node_modules/xlsx-style/dist/cpexcel.js
Module not found: Error: Can't resolve './cptable' in 'C:\Users\cabannesj\Documents\Virga3\virga-frontend\node_modules\xlsx-style\dist'
ERROR in ../node_modules/xlsx-style/xlsx.js
Module not found: Error: Can't resolve 'fs' in 'C:\Users\cabannesj\Documents\Virga3\virga-frontend\node_modules\xlsx-style'
ERROR in ../node_modules/xlsx-style/ods.js
Module not found: Error: Can't resolve 'fs' in 'C:\Users\cabannesj\Documents\Virga3\virga-frontend\node_modules\xlsx-style'
Run Code Online (Sandbox Code Playgroud)

'xlsx.core.min.js'angular.json文件的脚本部分添加了内容。

我不知道要xlsx-style使用我的应用程序缺少什么。

excel xlsx js-xlsx angular

5
推荐指数
0
解决办法
1111
查看次数

如何从Web Worker下载文件?

在项目(在Angular4.3上编写)中,我们使用xlsx创建xlsx/csv表以供用户下载。我们面临的问题是,当我们尝试导出大量数据时,原始json文件可以是100+Mb,转换后的xlsx/csv文件可以是28Mb,并且所有这些转换操作都在客户端处理,它使用所有资源在主线程上。我尝试添加网络工作人员以将所有进程移动到另一个线程,当尝试从工作人员下载创建的文件时,我收到错误:

export.worker.bundle.js:2 未捕获错误:无法保存文件 test.xlsx

单击添加工人的示例代码:

btn.addEventListener('click', (e) => {
  const worker = new Worker('./export.worker.bundle.js');
  const payload = {
   data: [
   { name: 'Moran', role: 'back' },
   { name: 'Alain', role: 'front' },
   { name: 'Tony', role: 'back' },
   { name: 'Mike', role: 'back' },
   { name: 'Abo', role: 'back' },
   { name: 'Toni', role: 'back' }
   ]
  };
  worker.postMessage(payload);
  worker.onmessage = (e) => {
  console.log(e.data);
  // worker.terminate();
  };
 });
Run Code Online (Sandbox Code Playgroud)

工人代码:

(function() {
 const XLSX = require('xlsx');
 const utils …
Run Code Online (Sandbox Code Playgroud)

javascript web-worker js-xlsx angular

5
推荐指数
0
解决办法
1823
查看次数

使用 xlsx/sheetjs 添加动态列

我有一个包含 id 和数据的多个标签的数组:

[
  {
    "id": "tagID1", 
    "error": { "code": 0, "success": true }, 
    "data": [
      [1604395417575, 108, 3], 
      [1604395421453, 879, 3]
    ]
  },
  {
    "id": "tagID2", 
    "error": {"code": 0, "success": true}, 
    "data": [
      [1604395417575, 508, 3], 
      [1604395421453, 179, 3]
    ]
  }
]
Run Code Online (Sandbox Code Playgroud)

我想使用NPM 的xlsx包将此数据转换为 Excel 电子表格。

注:1604395417575 是时间戳,608 是值,3 是质量。

我想按以下格式在 Excel 工作表中显示

| Timestamp    |  tagID1 value  | tagID1 quality | tagID2 value | tagID2 quality|
| --------     | -------------- | -------- ------| -------------| ------------- | …
Run Code Online (Sandbox Code Playgroud)

javascript npm js-xlsx angular sheetjs

5
推荐指数
1
解决办法
9414
查看次数

标签 统计

js-xlsx ×10

javascript ×7

excel ×4

angular ×3

npm ×2

sheetjs ×2

xlsx ×2

cordova ×1

format ×1

jasmine ×1

protractor ×1

web-worker ×1