相关文章推荐
酒量大的饭卡  ·  使用Vue3和Electron实现进程通讯, ...·  1 月前    · 
阳刚的饭盒  ·  Electron 对 SQLite ...·  1 月前    · 
激动的烤地瓜  ·  Electron中excel读取开发者社区·  3 周前    · 
打篮球的冰棍  ·  python 读取海康摄像头 ...·  1 月前    · 
深情的饺子  ·  如何把csv读取的一列数据都转换为字符串 ...·  9 月前    · 
旅行中的荒野  ·  pandas if ...·  1 年前    · 
威武的蜡烛  ·  Python数据可视化:WordCloud入 ...·  1 年前    · 
强健的松鼠  ·  SQL将列的内容和并,按分类求列的平均值_s ...·  1 年前    · 
Code  ›  Electron中excel读取开发者社区
table electron
https://cloud.tencent.com/developer/article/2134278
激动的烤地瓜
3 周前
码客说

Electron中excel读取

前往小程序,Get 更优 阅读体验!
立即前往
腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
发布
首页
学习
活动
专区
圈层
工具
MCP广场
返回腾讯云官网
码客说
首页
学习
活动
专区
圈层
工具
MCP广场
返回腾讯云官网
社区首页 > 专栏 > Electron中excel读取

Electron中excel读取

作者头像
码客说
发布 于 2022-10-04 21:37:12
发布 于 2022-10-04 21:37:12
1.5K 0 0
代码可运行
举报
文章被收录于专栏: 码客 码客
运行总次数: 0
代码可运行

Excel导入导出

下载

代码语言: javascript
代码 运行次数: 0
运行
复制
npm install node-xlsx

代码中引入node-xlsx包

代码语言: javascript
代码 运行次数: 0
运行
复制
const nodeXlsx = require("node-xlsx"); //引入模块

导入Excel文件

代码语言: javascript
代码 运行次数: 0
运行
复制
let path = 'D://test.xlsx'
let sheets = nodeXlsx.parse(path)
// 解析所有sheet
sheets.forEach(sheet => {
    // sheet.data是所有行数据
    let rows = sheet.data
    for (var i = 0; i < rows.length; i++) {
        console.log(`第${i + 1}行第一列数据:${rows[i][0]}`)
        console.log(`第${i + 1}行第二列数据:${rows[i][1]}`)
});

导出Excel

代码语言: javascript
代码 运行次数: 0
运行
复制
const xlsx = require("node-xlsx"); //引入模块
const exportExcel = (data) => {
  // 設置表格列寬
  const options = {
    "!cols": [
      { wch: 25 },
      { wch: 45 },
      { wch: 90 },
  // 要導出的數據數組
  let xlsxObj = [
      name: "sheet",
      data: [
          "id",
          "name",
          "age",
  // 生成導出的數據
  let foodData = data;
  foodData.forEach((item) => {
    let typeArr = [];
    typeArr.push(item.type);
    item.foodsList.forEach((list) => {
      let listArr = [];
      for (const key in list) {
        listArr.push(list[key]);
      xlsxObj[0].data.push(typeArr.concat(listArr));
  //xlsxObj最终的数据格式为:
  // 二维数组
  //   ["id","name","age"],//第一列为表头信息
  //   ['1','小明',16],
  //   ['2','小红',18],
  //   ......
  return xlsx.build(xlsxObj, options)
module.exports = exportExcel;

导出

代码语言: javascript
代码 运行次数: 0
运行
复制
var exportExcel = require('./exportExcel');
var fs = require('fs');
let data = [{
    id:"1",
    name:"小明",
    age:16
    id:"2",
    name:"小红",
    age:18
var buffer = exportExcel(data);
fs.writeFile('./result.xls',buffer,function(err){
    if(err){
        console.info(err);
    }else{
        console.info("导出成功");
})

前端导出Excel

工具类

代码语言: javascript
代码 运行次数: 0
运行
复制
var download_excel = function (content, filename) {
    // 创建隐藏的可下载链接
    var eleLink = document.createElement("a");
    eleLink.download = filename;
    eleLink.style.display = "none";
    // 字符内容转变成blob地址
    var blob = new Blob([content]);
    eleLink.href = URL.createObjectURL(blob);
    // 触发点击
    document.body.appendChild(eleLink);
    eleLink.click();
    // 然后移除
    document.body.removeChild(eleLink);
//替换table数据和worksheet名字
var format = function (s, c) {
    return s.replace(/{(\w+)}/g, function (m, p) {
        return c[p];
export const table2excel = function (tableid, sheetName) {
    var template =
        '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"' +
        'xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>' +
        "<x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets>" +
        "</x:ExcelWorkbook></xml><![endif]-->" +
        ' <style type="text/css">' +
        "table th,td {" +
        "min-width: 200px;" +
        " text-align: center;" +
        "background-color: #ffffff;" +
        "color: #333333;" +
        " }" +
        "</style>" +
        '</head><body ><table class="excelTable">{table}</table></body></html>';
    if (!tableid.nodeType) tableid = document.getElementById(tableid);
    var ctx = {worksheet: sheetName || "Worksheet", table: tableid.innerHTML};
    download_excel(format(template, ctx), sheetName);
};

使用

代码语言: javascript
代码 运行次数: 0
运行
复制
import {table2excel} from "./export_table_excel.js";
table2excel("mytable", "评价统计.xls");

选择文件夹/文件

选择文件夹

添加引用

代码语言: javascript
代码 运行次数: 0
运行
复制
const { app, dialog } = window.require("electron").remote;

弹窗选择

代码语言: javascript
代码 运行次数: 0
运行
复制
select_dir: function() {
    dialog
        .showOpenDialog({
        properties: ["openFile", "openDirectory"]
        .then(result => {
        if (!result.canceled) {
            this.outpath = result.filePaths[0];
        .catch(err => {
        console.log(err);
}

选择文件

代码语言: javascript
代码 运行次数: 0
运行
复制
dialog.showOpenDialog({
    title:'请选择文件',
    defaultPath:'',
    filters:[{
        name:'表格(xls/xlsx)',
        extensions:['xls','xlsx']
    buttonLabel:'选择文件'
}).then(result=>{
    console.info('path',result.filePaths[0]);
}).catch(err=>{
    console.log(err)
})

进程间通讯

渲染进程

代码语言: javascript
代码 运行次数: 0
运行
复制
ipcRenderer.on('read_xls_result', (event, arg) => {
    let all_data = arg;
    let table_header = [];
    let table_data = [];
    if(all_data&&all_data.length>0){
        table_header = all_data[0];
        for (let i = 1; i < all_data.length; i++) {
            let row = all_data[i];
            let data_row = {};
            //设置初始值
            for (let j = 0; j < table_header.length; j++) {
                data_row[table_header[j]+""] = "";
            for (let j = 0; j < row.length; j++) {
                data_row[table_header[j]+""] = row[j]||"";
            table_data.push(data_row);
    console.info("table_header",table_header);
    console.info("table_data",table_data);
    this.table_header = table_header;
    this.table_data = this.table_data.concat(table_data) ;
ipcRenderer.send('read_xls', this.outpath)

在主进程中

代码语言: javascript
代码 运行次数: 0
运行
复制
const { ipcMain } = require("electron")
ipcMain.on("read_xls", (event, arg) => {
    console.log(arg);
    let sheets = nodeXlsx.parse(arg)
    sheets.forEach(sheet => {
        // sheet.data是所有行数据
 
推荐文章
酒量大的饭卡  ·  使用Vue3和Electron实现进程通讯,创建窗口并传参_electron vue3 通信
1 月前
阳刚的饭盒  ·  Electron 对 SQLite 进行加密_better-sqlite3-multiple-ciphers
1 月前
激动的烤地瓜  ·  Electron中excel读取开发者社区
3 周前
打篮球的冰棍  ·  python 读取海康摄像头 python调用海康sdk_definitely的技术博客_51CTO博客
1 月前
深情的饺子  ·  如何把csv读取的一列数据都转换为字符串 - CSDN文库
9 月前
旅行中的荒野  ·  pandas if else语句(数据替换)_孤数不证的博客-CSDN博客
1 年前
威武的蜡烛  ·  Python数据可视化:WordCloud入门-python 数据可视化
1 年前
强健的松鼠  ·  SQL将列的内容和并,按分类求列的平均值_sql 分组求平均数_香煎三文鱼的博客-CSDN博客
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号