我有一个 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 格式?最近两天我被困在这里了。任何帮助将不胜感激。
我正在创建一个网页,其中的数据上传到 HTML 表。经过一些计算后,会生成一个输出 HTML 表。输出 HTML 表必须以 Excel ( .xlsx) 格式转储。我使用SheetJS库来上传和下载。
我尝试过以下代码,将数据导出到 Excel,无需任何格式。
计算后输出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)
我动态地将行添加到 html 表中,并且想使用 SheetJs 将表内容保存到 xlsx 文件中。生成的文件是空的。当以这种方式添加表格内容时,是否可以在这种情况下做到这一点?我还尝试在创建 xlsx 文件之前添加行。
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-2.1.4.js"
integrity="sha256-siFczlgw4jULnUICcdm9gjQPZkw/YPDqhQ9+nAOScE4=" crossorigin="anonymous"></script>
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/amcharts/3.21.15/plugins/export/libs/FileSaver.js/FileSaver.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.15.6/xlsx.full.min.js"></script>
<style>
table,
td {
border: 1px solid black;
}
</style>
</head>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.10.3/xlsx.full.min.js">
</script>
<p>Click the button to add a new row at the first position of the
table and then add cells and content</p>
<table id="myTable">
<TR>
</TR>
</table>
<button type="button" id="first" onclick="First('myTable')">Principal</button>
<button id="button-a">Create Excel</button>
<script>
function First(tableID) {
let table = document.getElementById(tableID)
table.innerHTML …Run Code Online (Sandbox Code Playgroud)我有一个使用SheetJS编写 excel 文件的 Vue 项目。
如何在生成的 excel 文件中设置列的格式?
我需要将 SalesOrderDate、CustomerRequestedDeliveryDate、ConfirmedDate 和 _ProductionDate 设置为日期格式。
generateExcel() {
axios.get('generateExcel?format=json', {
params: {
division: this.auth.user.current_division,
area: this.form.area,
month: this.form.month
}
})
.then(response => {
let structArray = []
for (let [index, value] of response.data.entries()) {
structArray.push({
SalesOrderNumber: value.so_id,
SalesOrderDate: (value.so_date.trim().length ? moment(value.so_date, 'MMMM, DD YYYY HH:mm:ss', true).format('MM/DD/YYYY'): ''),
ShipmentStatus: value.shipment_status,
Remarks: value.remarks,
ID: value.id,
ModelName: value.model_name,
ModelNumber: value.model_id,
Qty: value.qty,
CustomerRequestedDeliveryDate: (value.requested_delivery_date.trim().length ? moment(value.requested_delivery_date, 'MMMM, DD YYYY HH:mm:ss', true).format('MM/DD/YYYY'): ''),
ConfirmedDate: …Run Code Online (Sandbox Code Playgroud) 我使用SheetJS将数据导出到excel,看起来像excel本身修复数据。数据下载良好,但是收到此警告可以吗?我从 UI 中获取了 file.xlsx,当我通过 Excel 打开它时,我收到了一些由 Excel 本身生成的警告。

代码:
const download = (url, name) => {
let a = document.createElement('a')
a.href = url
a.download = name
a.click()
window.URL.revokeObjectURL(url)
}
function Workbook() {
if (!(this instanceof Workbook))
return new Workbook()
this.SheetNames = []
this.Sheets = {}
}
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 view
}
export default data => …Run Code Online (Sandbox Code Playgroud) 我从此“教程”中复制了代码:
https://sheetjs.com/demos/table.html
function doit(type, fn, dl) {
var elt = document.getElementById('data-table');
var wb = XLSX.utils.table_to_book(elt, {sheet:"Sheet JS"});
return dl ?
XLSX.write(wb, {bookType:type, bookSST:true, type: 'base64'}) :
XLSX.writeFile(wb, fn || ('test.' + (type || 'xlsx')));
}
Run Code Online (Sandbox Code Playgroud)
因此,我最终在Angular中创建了此方法:
exportTableToExcel() {
var type = "xlsx"
var elt = document.getElementsByClassName('table');
var wb = XLSX.utils.table_to_book(elt, /*{sheet:"Sheet JS"}*/);
return XLSX.writeFile(wb, undefined || ('test.' + (type || 'xlsx')));
}
Run Code Online (Sandbox Code Playgroud)
好吧,在table_to_book方法的那一行,我收到了这个异常:
table.getElementsByTagName不是函数
我也尝试过本教程,该教程与之相似,但适用于Angular 4,而不是5。
http://vinhboy.com/blog/2017/06/13/how-to-use-sheetjs-xlsx-with-angular-4-typescript-in-the-browser/
我在 Angular 7 中使用sheetjs。并且我从我的json 导出excel。但 Excel 将我的日期转换为 02/29/2019 格式。但是,我要发送“29.02.2019”。我以字符串形式发送,Excel 仍在转换。我还发送“29.02.2019”。通过增加 ”。” 日期结束时的字符,但它仍然转换为“02/29/2019”。。如何实现按我的格式显示?
import * as XLSX from 'xlsx';
exportExcelFromJson(jsonData): void {
const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet(jsonData);
const wb: XLSX.WorkBook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
XLSX.writeFile(wb, 'MyExcel.xlsx');
}
Run Code Online (Sandbox Code Playgroud) 我正在使用sheetjs。空单元格不会填充到 json 对象(包括标题)中。如果未输入列,我也需要该信息。这是我的代码:
workbook.SheetNames.forEach((sheetName) => {
let XL_row_object = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName], {defval:""});
console.log( JSON.stringify(XL_row_object ));
}
Run Code Online (Sandbox Code Playgroud) 我有以下 HTML 表格和 Javascript 函数,使用 SheetJS 解析表格,然后将它们导出到 Excel 文件。
var tablesToExcel = (function() {
return function(tables, wsnames, wbname) {
var workbook = XLSX.utils.book_new();
for (var i = 0; i < tables.length; i++) {
var ws1 = XLSX.utils.table_to_sheet(document.getElementById(tables[i]));
console.log(ws1);
XLSX.utils.book_append_sheet(workbook, ws1, wsnames[i]);
}
XLSX.writeFile(workbook, wbname);
}
})();Run Code Online (Sandbox Code Playgroud)
<table id="po-table">
<thead class="thead-dark">
<tr>
<th scope="col"> Operating Unit</th>
<th scope="col"> Rate </th>
</tr>
</thead>
<tbody>
<tr>
<td>Leyte</td>
<td>90%</td>
</tr>
</tbody>
</table>
<table id="cert-table">
<thead class="thead-dark">
<tr>
<th scope="col"> Operating Unit</th>
<th scope="col"> Rate …Run Code Online (Sandbox Code Playgroud)我目前正在使用https://www.npmjs.com/package/xlsx在 JS 中创建通用电子表格。这可以很好地生成一个通用电子表格来显示我的数据。但是,我想添加一些功能。
https://imgur.com/a/gJE9mXg是我想要实现的一个例子。它是使用 Apache POI 创建的,仅适用于 Java。
我想要在该屏幕截图中的功能是
似乎 SheetJS 可以通过他们的高级版本提供一些这样的功能。https://dzone.com/articles/5-popular-standalone-javascript-spreadhsheet-libra是我研究过的其他库的列表。然而,该列表似乎更像是用原生 JS 对象模拟电子表格,而不是创建 .xlsx 文件。此外,它们中的大多数都需要付费许可证。
有人有使用免费 JS 解决方案创建我的 4 个需求的经验吗?顺便说一句,我正在 Meteor JS 上构建。
如果没有,是否还有其他解决方法来实现这一目标?即让应用程序只输出一个 .csv,然后创建一个通用的 excel“模板”文件,该文件将使用 csv 进行所有格式化?或者,委托其他程序/脚本生成 XLSX 并下载输出文件。
谢谢
sheetjs ×10
javascript ×8
excel ×5
angular ×2
html ×2
html-table ×2
vue.js ×2
xlsx ×2
ajax ×1
angular7 ×1
ecmascript-6 ×1
jquery ×1
meteor ×1
spreadsheet ×1
typescript ×1