JavaScript 可以用于实现Excel文件的导入和导出。在实现这一功能之前,需要引入两个外部 JavaScript 库:SheetJS 和 FileSaver。
- SheetJS 是一个 JavaScript 库,提供了读取、解析、写入 Excel 文件的功能。可以通过npm安装SheetJS:
npm install xlsx
- FileSaver 是一个 JavaScript 库,提供了将文件保存到本地的功能。可以通过npm安装FileSaver
npm install file-saver
在引入这两个库之后,我们可以开始实现 Excel 文件导入导出的功能。以下是具体步骤:
- 导入 Excel 文件
要导入 Excel 文件,需要创建一个文件上传表单,以允许用户选择要上传的文件。通过input
标签创建文件上传表单,如下所示:
<input type="file" id="fileInput" />
接下来,通过监听 change
事件监听文件上传的操作:
var fileInput = document.getElementById('fileInput');
fileInput.addEventListener('change', function(e) {
var file = e.target.files[0];
var reader = new FileReader();
reader.onload = function() {
var data = new Uint8Array(reader.result);
var workbook = XLSX.read(data, { type: 'array' });
// Do something with workbook file
};
reader.readAsArrayBuffer(file);
}, false);
在这段代码中,我们获取上传的文件并利用 FileReader
读取文件内容,并使用 SheetJS 库解析文件内容,最终生成一个文件对象的实例 workbook
,我们可以利用这个对象的方法来获取 Excel 中的数据等信息,例如:
// 获取 Excel 中第一个 sheet 中的所有数据
var sheet1 = workbook.Sheets['Sheet1'];
var data = XLSX.utils.sheet_to_json(sheet1);
console.log(data);
- 导出 Excel 文件
实现文件导出的功能需要创建 Excel 数据并将其写入 Excel 文件中。以将表格数据导出为 Excel 文件为例,以下是实现步骤:
function exportExcel() {
// data 为表格数据,例如 [{'name': '张三', 'age': 18}, {'name': '李四', 'age': 20}]
var worksheet = XLSX.utils.json_to_sheet(data);
var workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
var workbook_out = XLSX.write(workbook, { bookType: 'xlsx', type: 'binary' });
saveFile(workbook_out, 'export-test.xlsx');
}
function saveFile(data, fileName) {
var blob = new Blob([data], { type: 'application/octet-stream' });
saveAs(blob, fileName);
}
在这段代码中,我们使用 XLSX.utils.json_to_sheet()
方法将表格数据转换为 SheetJS 库中的 sheet 对象,然后创建一个工作簿并将该 sheet 对象添加到工作簿中。最后,将工作簿写入二进制格式并将文件保存到本地。
以下是另一条示例说明:
从 SQLite 数据库导出数据并生成 Excel 文件,这是一个基于 Node.js 的示例。
const sqlite3 = require('sqlite3').verbose();
const XLSX = require('xlsx');
const fs = require('fs');
const db = new sqlite3.Database('test.db');
const sql = 'SELECT * FROM users';
db.all(sql, [], (err, rows) => {
if (err) throw err;
const worksheet = XLSX.utils.json_to_sheet(rows);
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
const buffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'buffer', compression: true });
fs.writeFile('output.xlsx', buffer, (err) => {
if (err) throw err;
console.log('Excel file successfully created.');
});
});
db.close();
在这段代码中,我们从 SQLite 数据库中选取所有用户数据,利用 SheetJS 将数据生成 sheet 对象,并将其添加到工作簿中。接着,我们使用 XLSX.write()
方法将工作簿写入二进制文件,最后将文件保存到本地。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript实现excel文件导入导出 - Python技术站