软件教程 2025年08月6日
0 收藏 0 点赞 448 浏览 4439 个字
摘要 :

文章目录 一、插件安装与引入 (一)安装插件 (二)引入插件 二、基本功能实现 (一)读取Excel文件 (二)写入Excel文件 三、高级功能拓展 (一)自定义样式 (……




  • 一、插件安装与引入
    • (一)安装插件
    • (二)引入插件
  • 二、基本功能实现
    • (一)读取Excel文件
    • (二)写入Excel文件
  • 三、高级功能拓展
    • (一)自定义样式
    • (二)合并单元格
    • (三)添加水印
  • 四、完整使用示例
    • (四)实际调用

    Vue项目借助xlsx插件,能轻松实现数据导出为Excel文件。接下来,就详细介绍如何在Vue项目里使用xlsx插件进行Excel文件的导出。

    一、插件安装与引入

    (一)安装插件

    在项目的开发环境中,使用包管理工具来安装xlsx插件及其相关依赖。如果使用npm,在命令行输入:

    npm install xlsx
    npm install file-saver
    

    要是你习惯用yarn,对应的命令则是:

    yarn add xlsx
    yarn add file-saver
    

    这两组命令的作用是一样的,都是把xlsxfile-saver这两个插件安装到项目中,xlsx用于处理Excel文件的读写操作,file-saver则负责将生成的Excel文件保存到本地。

    (二)引入插件

    安装完成后,需要在代码中引入这两个插件,才能在项目里使用它们的功能。在相关的JavaScript文件中,添加以下代码:

    import * as XLSX from \'xlsx\';
    import FileSaver from \'file-saver\';
    

    这样就把xlsxfile-saver成功引入到当前代码文件中,后续就能调用它们的方法来操作Excel文件了。

    二、基本功能实现

    (一)读取Excel文件

    读取Excel文件时,可以按以下步骤进行:

    // 读取指定路径下的Excel文件内容,返回一个包含文件信息的工作簿对象
    const workbook = XLSX.readFile(\'path/to/file.xlsx\');
    // 获取工作簿中第一个工作表的名称
    const firstSheetName = workbook.SheetNames[0];
    // 根据工作表名称获取对应的工作表对象
    const worksheet = workbook.Sheets[firstSheetName];
    // 将工作表中的数据转换为JSON格式,方便在JavaScript中处理和使用
    const data = XLSX.utils.sheet_to_json(worksheet);
    console.log(data);
    

    通过这几步操作,就能读取Excel文件中的数据,并将其转换为JavaScript中的数据结构,便于后续的处理和分析。

    (二)写入Excel文件

    写入Excel文件的流程如下:

    // 创建一个新的工作簿对象,作为Excel文件的基础结构
    const workbook = XLSX.utils.book_new();
    // 准备要写入的数据,这里以一个包含表头和数据行的二维数组为例
    const data = [
      [\'Name\', \'Age\', \'Email\'],
      [\'Alice\', 25, \'alice@example.com\'],
      [\'Bob\', 30, \'bob@example.com\']
    ];
    // 将二维数组数据转换为工作表对象,以便添加到工作簿中
    const worksheet = XLSX.utils.aoa_to_sheet(data);
    // 将创建好的工作表添加到工作簿中,并指定工作表名称为\'Sheet1\'
    XLSX.utils.book_append_sheet(workbook, worksheet, \'Sheet1\');
    // 将工作簿对象写入到本地文件系统,生成名为\'output.xlsx\'的Excel文件
    XLSX.writeFile(workbook, \'output.xlsx\');
    

    按照上述步骤,就能在项目中创建一个新的Excel文件,并将数据写入其中。

    三、高级功能拓展

    (一)自定义样式

    有时候,我们需要对Excel文件的样式进行自定义,比如设置列宽、字体加粗、单元格颜色等。可以参考下面的代码:

    // 将数据转换为工作表对象
    const ws = XLSX.utils.aoa_to_sheet(data);
    // 定义每列的宽度,这里设置第一列宽度为15字符宽度,第二列为10,第三列为30
    const wscols = [
      { wch: 15 },
      { wch: 10 },
      { wch: 30 }
    ];
    // 将定义好的列宽应用到工作表
    ws[\'!cols\'] = wscols;
    // 获取工作表中A1单元格对象,准备设置样式
    const cell = ws[\'A1\'];
    // 为A1单元格设置样式,这里设置字体加粗,背景填充色为红色(RGB值为FF0000)
    cell.s = {
      font: { bold: true },
      fill: { fgColor: { rgb: \'FF0000\' } }
    };
    

    通过这些代码,能对Excel文件的样式进行个性化设置,让生成的文件更加美观和专业。

    (二)合并单元格

    合并单元格可以让Excel文件的布局更加合理,代码实现如下:

    // 定义合并单元格的范围,这里表示合并A1到C1单元格
    ws[\'!merges\'] = [
      { s: { r: 0, c: 0 }, e: { r: 0, c: 2 } } 
    ];
    

    在实际使用时,根据需求修改合并单元格的起始和结束位置即可。

    (三)添加水印

    给Excel文件添加水印也是常见的需求,实现代码如下:

    // 在工作表中添加水印,水印内容为\'Watermark\',origin为-1表示从右下角开始添加
    XLSX.utils.sheet_add_aoa(ws, [[\'Watermark\']], { origin: -1 });
    

    通过这段代码,就能在Excel文件的工作表中添加水印,起到一定的标识或版权保护作用。

    四、完整使用示例

    在实际项目中,通常会把导出Excel文件的功能封装成一个方法,方便在不同地方调用。下面是一个完整的导出数据到Excel的方法示例:

    import * as XLSX from \'xlsx\';
    import FileSaver from \'file-saver\';
    
    // 定义导出数据到Excel的方法,接收一个包含各种配置项的对象
    export function exportJsonToExcel(options) {
      // 设置默认配置项
      const defaultOptions = {
        sheetName: \'Sheet1\',
        autoWidth: true,
        watermark: \'\'
      };
      // 合并传入的配置项和默认配置项,优先使用传入的配置
      const { header, data, filename, sheetName, autoWidth, watermark } = {
        ...defaultOptions,
        ...options
      };
      // 创建新的工作簿
      const wb = XLSX.utils.book_new();
      // 处理数据,在数据开头添加表头
      const exportData = [header, ...data];
      // 根据处理后的数据创建工作表
      const ws = XLSX.utils.aoa_to_sheet(exportData);
      // 如果设置了自动调整列宽
      if (autoWidth) {
        // 根据数据内容计算每列的合适宽度
        const colWidths = header.map((_, colIndex) => {
          return {
            wch: Math.max(
              ...exportData.map(row => {
                const cellValue = row[colIndex];
                // 如果单元格值为空,设置最小宽度为10
                if (cellValue == null) return 10;
                // 根据字符串长度计算宽度,非ASCII字符按两个字符宽度计算
                return String(cellValue).replace(/[^\\x00-\\xff]/g, \'aa\').length * 8 + 2;
              })
            )
          };
        });
        // 将计算好的列宽应用到工作表
        ws[\'!cols\'] = colWidths;
      }
      // 如果设置了水印
      if (watermark) {
        // 如果工作表没有合并单元格的配置,先初始化
        if (!ws[\'!merges\']) ws[\'!merges\'] = [];
        // 添加一个合并单元格的配置,用于放置水印
        ws[\'!merges\'].push({
          s: { r: exportData.length + 1, c: 0 },
          e: { r: exportData.length + 1, c: header.length - 1 }
        });
        // 在指定位置添加水印
        XLSX.utils.sheet_add_aoa(ws, [[watermark]], { origin: -1 });
      }
      // 将工作表添加到工作簿
      XLSX.utils.book_append_sheet(wb, ws, sheetName);
      // 将工作簿转换为二进制数据
      const excelBuffer = XLSX.write(wb, {
        bookType: \'xlsx\',
        type: \'array\'
      });
      // 创建一个Blob对象,用于保存二进制数据,设置文件类型为Excel文件类型
      const blob = new Blob([excelBuffer], {
        type: \'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\'
      });
      // 使用file-saver插件将Blob对象保存为本地文件,文件名由传入的filename决定
      FileSaver.saveAs(blob, `${filename}.xlsx`);
    }
    

    这个方法接收一些参数,用于配置导出的Excel文件的各项属性,具体参数说明如下:

    • header: 表头数组,用来定义Excel文件每列的名称。
    • data: 数据数组,包含要导出到Excel文件中的具体数据。
    • filename: 导出的Excel文件的名称。
    • sheetName: 工作表名称,默认是Sheet1
    • autoWidth: 控制是否自动调整列宽,默认开启。
    • watermark: 水印文本内容,默认为空。

    (四)实际调用

    在项目中使用这个导出方法时,按照以下方式调用:

    import { exportJsonToExcel } from \"@/utils/index\";
    
    // 定义导出Excel文件的函数
    const exportExcel = () => {
      // 定义表头
      const header = [
        \"时间\",
        \"类型\",
        \"地址\",
        \"ID\",
      ];
      // 假设tableData是已经获取到的项目中的数据,将其转换为适合导出的格式
      const data = tableData.value.map((item) => [
        item.time,
        item.type,
        item.address,
        item.id,
      ]);
      // 调用导出方法,传入配置参数
      exportJsonToExcel({
        header,
        data,
        filename: \"excel名\",
      });
    };
    

    通过以上步骤,就可以在Vue项目中顺利实现Excel文件的导出功能,并且能够根据需求进行各种个性化设置。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/6854.html

管理员

相关推荐
2025-08-06

文章目录 一、Promise基础回顾 二、Promise 与 axios 结合使用场景及方法 (一)直接返回 axios …

269
2025-08-06

文章目录 一、模块初始化时的内部机制 二、常见导出写法的差异分析 (一)写法一:module.exports…

107
2025-08-06

文章目录 一、ResizeObserver详解 (一)ResizeObserver是什么 (二)ResizeObserver的基本用法 …

683
2025-08-06

文章目录 一、前期准备工作 (一)下载相关文件 (二)安装必要工具 二、处理扣子空间生成的文件…

338
2025-08-06

文章目录 一、官方文档 二、自动解包的数据类型 ref对象:无需.value即可访问 reactive对象:保持…

371
2025-08-06

文章目录 一、Hooks的工作原理 二、在if语句中使用Hook会出什么岔子? 三、React官方的Hook使用规…

843
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号