标签: sheetjs

使用 SheetJS 将包含合并单元格的 .xlsx 文件转换为 JSON

我正在尝试使用 SheetJS 读取 .xlsx 文件并将其转换为 JSON。我能够读取简单的(没有合并单元格).xlsx 文件并将其转换为 JSON,但我无法正确处理合并单元格。

问题是我有一个 .xlsx 文件,其中包含不同语言的产品。

我尝试在不同的网站和 SheetJS 的 github 存储库https://github.com/sheetjs/js-xlsx/#json上寻找解决方案,但效果平平。主要解决如何编写合并单元格。

function handleFile(e) {
   var files = e.target.files, f = files[0];
   var reader = new FileReader();
   reader.onload = function(e) {
      var data = new Uint8Array(e.target.result);
      var workbook = XLSX.read(data, {type: 'array'});
      let result = '';
      let sheet_name_list = workbook.SheetNames;
      // iterate through sheets
      sheet_name_list.forEach(function (y) {

         workbook.Sheets[y]['!merges'].map(r => {
             let startChar = XLSX.utils.encode_range(r).split(':')[0].replace(/[^a-zA-Z]+/g, '');
             let endChar = XLSX.utils.encode_range(r).split(':')[1].replace(/[^a-zA-Z]+/g, '');
             let number = XLSX.utils.encode_range(r).split(':')[0].match(/[+-]?\d+(?:\.\d+)?/g)[0];
             for …
Run Code Online (Sandbox Code Playgroud)

javascript excel sheetjs

6
推荐指数
1
解决办法
6128
查看次数

如何使用xlsx npm库将嵌套的json对象转换为excel表?

我有一个嵌套的json对象。为了简单起见:

data = {'key1': 1, 'key2': 2, 'key3': {'nestedKey1': 3, 'nestedKey2': 4}}
Run Code Online (Sandbox Code Playgroud)

一个真实的对象更大,但要点是它是一个嵌套的对象。值可以是字符串,数字或其他对象。现在,我需要获取一个excel表(对于此特定的json如下所示):

|----------------------------------------
| key1 | key2 |           key3          |
|      |      |--------------------------
|      |      | nestedKey1 | nestedKey2 |
|----------------------------------------
|  1   |  2   |     3      |      4     |
|----------------------------------------
Run Code Online (Sandbox Code Playgroud)

为了做到这一点,我尝试使用xlsx库。我导入库,如下所示:

import { WorkSheet, WorkBook, utils, writeFile } from 'xlsx';
Run Code Online (Sandbox Code Playgroud)

在我的方法中,我定义了对象:

let myObj = {'key1': 1, 'key2': 2, 'key3': {'nestedKey1': 3, 'nestedKey2': 4}}
Run Code Online (Sandbox Code Playgroud)

然后创建一个工作表和工作簿:

const workSheet: WorkSheet = utils.json_to_sheet([myObj]);
const workBook: WorkBook = utils.book_new();
utils.book_append_sheet(workBook, workSheet, 'object_to_save');
Run Code Online (Sandbox Code Playgroud)

最后将其写入文件: …

javascript xlsx angular sheetjs

6
推荐指数
1
解决办法
980
查看次数

如何使用 SheetJS 将 XLSX 数据附加到现有工作表?

我目前正在使用 NodeJS 和库 SheetsJS 来阅读 XLSX 工作簿。

我的任务是从多个工作表中获取数据并将它们附加到新工作表中。工作表的结构在 A 列中具有类别,在 B列中具有类别值

*我尝试 过的事情*我尝试了 2 件事,它们提出了 2 个不同的问题:

1.) 我尝试使用内置函数sheet_to_json将我的 xlsx 数据格式化为 JSON,但它使标头成为每个对象的键。我已经使用选项skipHeader: true来否定这一点,但如果 A1 是标题,则 A2 是作为对象重复的下一个值。

下面是一个代码片段:

let readFiletoJSON = filename => {
    //wb = workbook
    let wb = xlsx.readFile(filename, {cellDates: true});

    let ws = wb.Sheets["1-Header"]

    let currentRange = { s: { c: 0, r: 1 }, e: { c: 1, r: 10 } }
    let encodedRange = xlsx.utils.encode_range(currentRange) …
Run Code Online (Sandbox Code Playgroud)

javascript excel xlsx sheetjs

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

XLSX 文件中的日期在 SheetJs 中无法正确解析

我正在尝试使用带有日期列的sheetjs节点模块读取XLSX文件。解析后我得到的数据格式不正确

文件数据为:2020年2月17日

但 xlsx 读完后,它给了我 2/17/20。它正在改变年份格式。我的要求是按原样获取数据。

示例代码:

var workbook = XLSX.readFile('a.xlsx', {
  sheetRows: 10
});
    
var data = XLSX.utils.sheet_to_json(workbook.Sheets['Sheet1'], {
  header: 1,
  defval: '',
  blankrows: true,
  raw: false
});
Run Code Online (Sandbox Code Playgroud)

javascript node.js sheetjs

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

使用 Sheetjs 访问单元格

我跟着这里的演示:https : //github.com/SheetJS/js-xlsx/tree/master/demos/electron

我可以将一个 excel 文件拖到我的电子应用程序中。

文件说,你可以访问每一个细胞:

for(var R = range.s.r; R <= range.e.r; ++R) {
  for(var C = range.s.c; C <= range.e.c; ++C) {
    var cell_address = {c:C, r:R};
    /* if an A1-style address is needed, encode the address */
    var cell_ref = XLSX.utils.encode_cell(cell_address);
  }
}
Run Code Online (Sandbox Code Playgroud)

我如何在下面的代码中使用它?我将文件的内容存储在我的测试变量中,但我无法访问它。那里的文档缺乏信息。

var do_file = (function() {
    return function do_file(files) {
        var f = files[0];
        var reader = new FileReader();
        reader.onload = function(e) {
            var data = e.target.result;
            data = new …
Run Code Online (Sandbox Code Playgroud)

javascript electron sheetjs

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

sheet js xlsx writeFile 回调

我正在尝试从使用 sheet js 库加载的一组数据中写入多个 csv 文件。我的第一次尝试是这样的:

    for (let i = 0; i < dataSetDivided.length; i++) {
      let exportSet = dataSetDivided[i]
      console.log(exportSet)
      let ws = XLSX.utils.json_to_sheet(exportSet, {header: finalHeaders})
        let wb = XLSX.utils.book_new()
        XLSX.utils.book_append_sheet(wb, ws, "SheetJS")

      let todayDate = this.returnFormattedDate()

      let originalFileName = this.state.fileName
      let exportFileName = 'import_' + originalFileName + '_' + todayDate + '(part_' + (i + 1) + ').csv'

      XLSX.writeFile(wb, exportFileName)
}
Run Code Online (Sandbox Code Playgroud)

使用此代码,我猜只写入了一些文件,因为 for 循环在继续之前不会等待写入文件。

所以我试图将每个文件写入如下承诺中:

Promise.all(
  dataSetDivided.map((exportSet, i) => {
    return new Promise((resolve, reject) => {

      console.log(exportSet)
      let …
Run Code Online (Sandbox Code Playgroud)

javascript xlsx promise reactjs sheetjs

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

使用 SheetJS 将 JSON 对象数组导出到 Excel

我有一个 JSON 对象数组,如下所示:

[
  {"name":"John", "city": "Seattle"},
  {"name":"Mike", "city": "Los Angeles"},
  {"name":"Zach", "city": "New York"}
]
Run Code Online (Sandbox Code Playgroud)

当我使用下面的代码时,它不起作用:

     _export: function(records,opts) {
                    var XLSX = xlsx;
                    var fileName = opts.split(".")[2]
                    var workSheet = XLSX.utils.json_to_sheet(records);
                    console.log("THis is Worksheet",workSheet);
                    var wb = XLSX.utils.book_new();
                    console.log("THis is workbook",wb)
                    XLSX.utils.book_append_sheet(wb, workSheet, fileName);
                    
                    var bin = XLSX.write(wb, {bookType:'xlsx',type: "binary"});
                    return new Blob([this._binStr2ArrBuff(bin)], { type: "" });
                },
            },
Run Code Online (Sandbox Code Playgroud)

我正在使用 SheetJS 版本 0.9.11,只是想检查是否有任何方法可以将其导出为 Excel 格式?最近两天我被困在这里了。任何帮助将不胜感激。

javascript excel vue.js sheetjs

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

将 HTML 表格导出到 Excel 并设置格式

我正在创建一个网页,其中的数据上传到 HTML 表。经过一些计算后,会生成一个输出 HTML 表。输出 HTML 表必须以 Excel ( .xlsx) 格式转储。我使用SheetJS库来上传和下载。

我尝试过以下代码,将数据导出到 Excel,无需任何格式。

HTML 表格标记

计算后输出HTML:

<table border="1" id="tempTable">
  <thead>
    <tr>
      <th style="border:1px solid #000000;border-collapse: collapse">Column1</th>
      <th style="border:1px solid #000000;border-collapse: collapse">Column2</th>
      <th style="border:1px solid #000000;border-collapse: collapse">Column3</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="border:1px solid #000000;border-collapse: collapse">R1C1</td>
      <td style="border:1px solid #000000;border-collapse: collapse">R1C2</td>
      <td style="border:1px solid #000000;border-collapse: collapse">R1C3</td>
    </tr>
    <tr>
      <td style="border:1px solid #000000;border-collapse: collapse">R2C1</td>
      <td style="border:1px solid #000000;border-collapse: collapse">R2C2</td>
      <td style="border:1px solid #000000;border-collapse: collapse">R2C3</td>
    </tr>
  </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

JavaScript 代码 …

javascript excel html-table sheetjs

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

如何将新行追加到 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万
查看次数

Exceljs 与 SheetJs

我正在使用 xlsx 文件。我找到了两个很棒的库

  1. ExcelJS
  2. Sheetjs(社区版/专业版)

但我无法在他们之间做出决定。我应该选择哪个对象?我研究了它们的功能比较,但没有发现任何这样的比较。大多数比较是基于启动次数、年龄、更新频率等,而不是基于它们的功能。

https://www.libtrends.info/npm-compare/exceljs-vs-xlsx

https://www.libhunt.com/compare-exceljs-vs-sheetjs

https://npmcompare.com/compare/exceljs,node-xlsx,xlsx

它们的功能没有区别吗?Sheetjs 的专业社区编辑怎么样?

exceljs sheetjs

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