标签: js-xlsx

使用 Angular 12 使用 js-xlsx 读取本地 Excel 文件?

我的 Angular-CLI 前端开发服务器在本地运行 localhost:4200

出于特定原因,我需要将本地 Excel 文件存储在我的 PC 上,读取其内容并对 API 进行一些调用。而且它必须是从客户端

我正在尝试使用 js-xlsx,已安装它,npm install xlsx但我找不到如何获取文件并读取其内容。

如何在 Angular 12 中使用 js-xlsx 导入本地 excel 文件?

注意:如果使用纯 JavaScript 可能/更容易,它对我也有效。

javascript excel file js-xlsx angular

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

如何从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
查看次数

如何将新行追加到 SheetJS 中 xlsm 工作簿中的现有工作表

我正在尝试将新行追加到现有的 Excel 工作表中,但没有成功。

当我使用writeFile而不是write函数时,它会创建一个包含所有数据的全新文件,但我想将行附加到现有记录。

这是到目前为止的代码。我正在使用 SheetJs。

const reader = require('xlsx')
const wb = reader.readFile('./plan.xlsm')    
const sheets = wb.SheetNames
var xl_data = reader.utils.sheet_add_json(wb.Sheets[sheets[0]], [
{ A: 4, B: 5, C: 6 }], {header: ["A", "B", "C"], skipHeader: true, origin: "A31"});
reader.utils.book_append_sheet(wb, xl_data);
reader.write(wb, {type: "binary", bookType: "xlsm" });
Run Code Online (Sandbox Code Playgroud)

javascript xlsx node.js js-xlsx sheetjs

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

你如何让 js_xlsx 保存所有空标题?

我正在开发一个 Meteor 应用程序,使用由“SheetJSDev”制作的“SheetJS”中名为“js_xlsx”的 Node.js 包。我正在使用这个包在后端将上传的 Excel 表转换为 JSON,这样我就可以将它存储在我的 MongoDB 中,并使用它在前端做一些花哨的分类工作。只有一个问题。该包会跳过标题为空的列,但最右侧的列的标题为空。我已经发现该包可以很好地处理带有空标题的列,但是因为 JSON 键需要是唯一的,所以它只保存 JSON 对象中带有空标题的最后一列。

例子:

填充所有标题:

在此处输入图片说明

在此处输入图片说明

如您所见,当所有标题都填满时,一切正常。

第一个和第二个最后一个标题为空:

在此处输入图片说明

在此处输入图片说明

在这里你看到倒数第二列放在前面,有一个“未定义”的标题,第一列甚至不在那里(因为它被倒数第二列覆盖,因为它们都有“未定义”作为它们的键)。

前 3 列和倒数第二个标题为空:

在此处输入图片说明

在此处输入图片说明

与第三张和第四张图像相同的东西。只有带有空标题的最后一列才会进入 JSON 对象。

现在,我已经浏览了源代码并搜索了 GitHub 页面,甚至要求 Google 帮助我,但没有太大帮助。

我想知道的是:

你如何让 js_xlsx 处理所有带有空标题的列?

包的 GitHub 页面的链接是:

https://github.com/SheetJS/js-xlsx

任何帮助深表感谢!

javascript json node.js meteor js-xlsx

4
推荐指数
1
解决办法
2322
查看次数

js-xlsx如何重新排列列?

我正在使用它js-xlsx来创建 Excel 文件。完成后.json_to_sheet,我得到的工作表不符合所需的列顺序。例如,我收到以下订单:

100 | 200 | 300| 400| a | b | c
Run Code Online (Sandbox Code Playgroud)

100, 200, 300, 400, a, b, c我的列标题是什么时候。

我要得到以下订单:

a | b | c | 100 | 200 | 300| 400
Run Code Online (Sandbox Code Playgroud)

a | b | c总是恒定的,而其他列的数量正在变化。

如何重新排列列顺序?

注意: 当使用数字作为标题时,请xlsx重新排列列,使标题以数字开头,然后是其余的。JSON当标题不以数字开头时,您可以仅对保存的列进行排序。一种解决方案是在数字前添加一个空格' ',这样就可以解决问题。但我不想在数字前有空格。

javascript excel json js-xlsx

4
推荐指数
1
解决办法
4406
查看次数

js-xlsx - 获取 Excel 工作表的特定行

我有一个 Excel 工作表,有 500 行。我正在尝试获取从 101 到 200 的行。

我在谷歌中搜索过,我找到了一个获取起始行的示例,例如1到100或1到1000,甚至1到任何数字。

但我还没有找到任何代码来获取从第 m 行到第 n 行的行(这里“m”和“n”可以是任何数字,例如 m=101 到 n=200)

下面是我发现获取前 100 行的代码:

  let workbook = XLSX.readFile('./files/uploaded_files/testfile.xlsx', {sheetRows: 100})
  const wsname = workbook.SheetNames[0];
  const ws = workbook.Sheets[wsname];
  var exceldata = XLSX.utils.sheet_to_json(ws);
Run Code Online (Sandbox Code Playgroud)

即使有任何其他模块可以获取之间的行,我想知道是否有任何?

javascript excel xlsx node.js js-xlsx

4
推荐指数
1
解决办法
9315
查看次数

Javascript使用SheetJS读取服务器上的Excel文件

我正在使用一个名为SheetJS的库,我想在不使用 nodejs 的情况下读取驻留在服务器上的 Excel 工作表,只使用纯 javascript。这可能吗?

文档中有一条消息说“readFile 仅在服务器环境中可用。浏览器没有用于读取给定路径的任意文件的 API,因此必须使用另一种策略”

对于上述消息,我假设作者指的是文件驻留在客户端的情况。

这是我到目前为止所做的

var wb = XLSX.readFile("myFile.xlsx"); //my file is in same directory on server
Run Code Online (Sandbox Code Playgroud)

我收到错误“ xlsx.full.min.js:22 Uncaught TypeError:无法读取未定义的属性‘readFileSync’

javascript excel jquery js-xlsx sheetjs

3
推荐指数
1
解决办法
5164
查看次数

Angular xlsx - 多个 json 到工作表

我使用 js-xlsx 和函数 utils.json_to_sheet 导出到 excel。

问题是我有另一个 json 对象,我想将其导出到同一张表,就在前一个的正下方。

XLSX.utils.json_to_sheet(outputData);
Run Code Online (Sandbox Code Playgroud)

试图在文档等中找到有关它的任何信息,但似乎没有人遇到过这个问题。不久前有人问过一个类似的问题,但不幸的是没有答案 - How to add multiple table with different data-set to the same sheet in exceljs。有任何想法吗?

js-xlsx angular

3
推荐指数
1
解决办法
7069
查看次数

无法使用js-xlsx读取读取excel文件的空单元格

我有一个使用 js-xlsx 读取的 excel 文件。除了单元格为空外,代码工作正常。这些单元格被忽略。创建 JSON 对象时,如何获取这些单元格?

我在 SO 以及其他一些论坛上针对同一问题解决了一些问题,但没有任何令人满意的结果。

欢迎任何帮助。我的代码是:

 reader.addEventListener('load', function(){
        var data = this.result;
        var wb = XLSX.read(data, {type: 'binary', sheetStubs:true});
        //  console.log(headers);

        wb.SheetNames.forEach(function(sheetName){
            //pulling out column headers for tablecreation
            var headers = get_header_row(wb.Sheets[sheetName]);
            createTableInDB(headers);
            // Here is your object
            var XL_row_object = XLSX.utils.sheet_to_json(wb.Sheets[sheetName]);
            //console.log(XL_row_object);

            for(var i=0; i<XL_row_object.length; i++){
                var json_object = XL_row_object[i];

                if(json_object !== null){
                    var dataobject = {
                        "tablename": tname,
                        "dbname": dbname,
                        "info": json_object,
                        "uname": uname
                    }

                    dataobject = $.toJSON(dataobject);

                    $.ajax({
                        type: "POST",
                        url: "insertIntoTable.php", …
Run Code Online (Sandbox Code Playgroud)

excel js-xlsx

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

标签 统计

js-xlsx ×10

javascript ×8

excel ×5

angular ×4

node.js ×3

sheetjs ×3

json ×2

xlsx ×2

file ×1

jquery ×1

meteor ×1

npm ×1

web-worker ×1