我正在使用一个名为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’ ”
我目前正在创建一个 Web 应用程序,允许用户将 excel 文件上传到数据库中,但在用户上传文件之前,我希望允许他们检查 excel 文件的标头是否与数据库上的预设匹配。下面的代码允许我显示 Excel 文件上的所有内容:
$('#inputfile').change(function(e){
var reader = new FileReader();
reader.readAsArrayBuffer(e.target.files[0]);
reader.onload = function(e) {
var data = new Uint8Array(reader.result);
var wb = XLSX.read(data,{type:'array'});
var htmlstr = XLSX.write(wb,{sheet:"Sheet1", type:'binary',bookType:'html'});
$('#printHere')[0].innerHTML += htmlstr;
}
});
Run Code Online (Sandbox Code Playgroud)
我只想将 Excel 文件的标题存储在数组中并显示它。我是 Javascript 新手,所以任何帮助将不胜感激。
我在构建服务器上使用 jenkins 进行构建时得到了这个,但我正在本地计算机上尝试这个,然后它工作正常但出现错误
15:07:39 "",
15:07:39 "",
15:07:39 "ERROR in src/services/excel.service.ts:2:23 - error TS2307: Cannot find module 'xlsx'.",
15:07:39 "",
15:07:39 "2 import * as XLSX from 'xlsx';",
15:07:39 " ~~~~~~"
15:07:39
Run Code Online (Sandbox Code Playgroud)
使用 npm install xlsx 安装 xlsx
并导入 xlsx 模块。从 'xlsx' 导入 * 作为 XLSX;
import { Injectable } from '@angular/core';
import * as XLSX from 'xlsx';
import * as _ from 'lodash';
@Injectable({
providedIn: 'root'
})
export class ExcelService {
constructor() { }
wopts: XLSX.WritingOptions = { bookType: …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个数组,其中每个“工作日”都是一个带有索引和开始/结束日期的对象,但我不知道如何操作 JSON 以获得特定的结构。
我正在使用以下包: https: //github.com/SheetJS/sheetjs
当前代码:
const workbook = XLSX.read(file.buffer, { type: 'buffer' });
const worksheet = workbook.Sheets['Calendar Config'];
const parsed = XLSX.utils.sheet_to_json(worksheet);
Run Code Online (Sandbox Code Playgroud)
电流输出:
[
{
'Calendar Name': 'Standard',
'Valid From': 44197,
'Valid To': 44561,
'Use Holidays': 'yes',
'Working Day': 'Monday',
Start: 0.3333333333333333,
End: 0.8333333333333334
},
{
'Working Day': 'Tuesday',
Start: 0.3333333333333333,
End: 0.8333333333333334
},
{
'Working Day': 'Wednesday',
Start: 0.3333333333333333,
End: 0.8333333333333334
},
{
'Working Day': 'Thursday',
Start: 0.3333333333333333,
End: 0.8333333333333334
},
{
'Working Day': 'Friday',
Start: 0.3333333333333333, …Run Code Online (Sandbox Code Playgroud) 我在尝试使用 SheetJS 从 构建 Workbook 对象时遇到了困难Blob,而不是像拖放或文件输入元素事件这样的客户端事件。后两者在文档的示例Blob中有所介绍,但我缺乏从我所拥有的、通过FileReader事件并转换为 API 所需的 JS-fu XLSX.read()。
给定浏览器中的 a Blob,这如何实现,或者可以实现吗?
浏览SheetJS 文档,我注意到支持导出到 csv 文件。我有工作代码,可以将对象数组转换为文件并开始下载:
let workSheet = XLSX.utils.json_to_sheet(rows);
let workBook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workBook, workSheet);
XLSX.writeFile(workBook, 'export.csv');
Run Code Online (Sandbox Code Playgroud)
但说到 tsv,只有一个将工作表转换为文本的示例:
> console.log(XLSX.utils.sheet_to_csv(ws, {FS:"\t"}));
S h e e t J S
1 2 3 4 5 6 7
2 3 4 5 6 7 8
Run Code Online (Sandbox Code Playgroud)
问题是,如何在文件中获得这种输出?
我希望能够将 .xlsx 文件上传到网页,以便稍后在 JavaScript 代码中使用 .xlsx 单元格中的值。如何将代码和 SheetJS 的 XLSX 结合起来来做到这一点?
如何使用 Node js 中的sheetjs 的 xlsx 包在现有的 xlsx 文件中创建/添加新的工作表文件?
到目前为止,这是我针对现有“todo-list.xlsx”文件的代码。
const xlsx = require('xlsx');
workBook = xlsx.readFile("todo-list.xlsx", {cellDates:true});
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情(这是通过使用 Excel JS 包完成的):
const sheet = workbookStream.addSheet('sheet1');
Run Code Online (Sandbox Code Playgroud)
...但是使用 xlsx 包。
非常感谢您!
当我使用该方法上传文件 xlsx 时,我使用 SheetJS
_file(file) {
/* Boilerplate to set up FileReader */
const reader = new FileReader();
reader.onload = (e) => {
/* Parse data */
const bstr = e.target.result;
const wb = XLSX.read(bstr, {type:'binary'});
/* Get first worksheet */
const wsname = wb.SheetNames[0];
const ws = wb.Sheets[wsname];
/* Convert array of arrays */
const data = XLSX.utils.sheet_to_json(ws, {header:1});
/* Update state */
this.data = data;
this.cols = make_cols(ws['!ref']);
};
reader.readAsBinaryString(file);
}
Run Code Online (Sandbox Code Playgroud)
我得到了一些有数据的单元格,但它包括一些没有数据的行如何删除它?我只想看到有数据的行。TIA
预先感谢您看这个问题!我正在尝试使用SheetJS读取.xlsx文件,但是在通过Excel将其格式化为自定义“ yyyy / mm / dd hh:mm:ss”的日期列时遇到了一些麻烦。所有这些日期都显示为较大的浮动值。
这是在上载时读取.xlsx文件的代码:
uploadWorkbook(e) {
let reader = new FileReader();
reader.readAsBinaryString(e.target.files[0]);
reader.onload = (e) => {
let data = e.target.result;
let workbook = XLSX.read(data, {type: 'binary'});
let first_sheet_name = workbook.SheetNames[0];
let worksheet = workbook.Sheets[first_sheet_name];
let jsonObj = XLSX.utils.sheet_to_json(worksheet);
console.log(jsonObj);
}
}
Run Code Online (Sandbox Code Playgroud)
例如,第一个对象的日期值为43395.29775462963。如果可能的话,我甚至可以将所有单元格格式化为字符串。任何帮助将不胜感激!
感谢大家!
sheetjs ×10
javascript ×8
excel ×4
typescript ×3
node.js ×2
xlsx ×2
angular ×1
csv ×1
exceljs ×1
filereader ×1
jquery ×1
js-xlsx ×1
npm ×1