javascript 导出数据到Excel(处理table中的元素)

下面是详细讲解“javascript 导出数据到Excel(处理table中的元素)”的完整攻略,过程中将包含两个示例说明。

1. 简介

在 web 开发中,有时需要将 table 数据导出为 Excel 文件。本文将介绍如何使用纯 javascript 处理 table 中的元素,并将 table 数据导出为 Excel 文件。

2. 代码实现

首先,我们需要编写一个 javascript 函数来遍历 table,并将 table 的每一行数据转为 Excel 里的一行数据。以下是示例代码:

function tableToExcel(tableId, fileName) {
    var table = document.getElementById(tableId);
    var rows = table.getElementsByTagName("tr");
    var arrContent = [];

    for (var i = 0; i < rows.length; i++) {
        var row = rows[i];
        var cells = row.getElementsByTagName("td");
        var arrRow = [];

        for (var j = 0; j < cells.length; j++) {
            var cell = cells[j];
            arrRow.push(cell.innerHTML);
        }

        arrContent.push(arrRow.join(","));
    }

    var csvContent = "data:text/csv;charset=utf-8," + arrContent.join("\n");
    var encodedUri = encodeURI(csvContent);
    var link = document.createElement("a");
    link.setAttribute("href", encodedUri);
    link.setAttribute("download", fileName + ".csv");
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
}

该函数接收两个参数:一个 table 的标识符和要导出的文件名。下面是函数实现的详细步骤:

  • 首先,获取 table 元素以及所有行和单元格的列表。
  • 接着,遍历所有行并创建一个新的数组来保存每一行单元格的数据。
  • 在遍历单元格时,将每个单元格的内容推入行数组中。
  • 将每行数据作为一段逗号分隔的文本行保存到 arrContent 数组中。
  • 将 arrContent 数组转换为逗号分隔的文本字符串 csvContent。
  • 将 csvContent 编码为 URI 并将其分配给链接的 href 属性。
  • 将文件名分配给链接的 download 属性。
  • 将链接添加到文档中、触发点击事件并从文档中删除该链接。

3. 示例

下面是两个示例,演示如何使用该函数将 table 导出为 Excel 文件。

示例 1:导出所有 table

HTML 代码:

<table id="table1">
    <thead>
        <tr>
            <th>编号</th>
            <th>姓名</th>
            <th>年龄</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td>张三</td>
            <td>25</td>
        </tr>
        <tr>
            <td>2</td>
            <td>李四</td>
            <td>30</td>
        </tr>
    </tbody>
</table>
<br>
<table id="table2">
    <thead>
        <tr>
            <th>编号</th>
            <th>性别</th>
            <th>邮箱</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td>女</td>
            <td>abc@123.com</td>
        </tr>
        <tr>
            <td>2</td>
            <td>男</td>
            <td>def@456.com</td>
        </tr>
    </tbody>
</table>
<br>
<button onclick="tableToExcel('table1','table1')">导出table1</button>
<button onclick="tableToExcel('table2','table2')">导出table2</button>

javascript 代码:

function tableToExcel(tableId, fileName) {
    var table = document.getElementById(tableId);
    var rows = table.getElementsByTagName("tr");
    var arrContent = [];

    for (var i = 0; i < rows.length; i++) {
        var row = rows[i];
        var cells = row.getElementsByTagName("td");
        var arrRow = [];

        for (var j = 0; j < cells.length; j++) {
            var cell = cells[j];
            arrRow.push(cell.innerHTML);
        }

        arrContent.push(arrRow.join(","));
    }

    var csvContent = "data:text/csv;charset=utf-8," + arrContent.join("\n");
    var encodedUri = encodeURI(csvContent);
    var link = document.createElement("a");
    link.setAttribute("href", encodedUri);
    link.setAttribute("download", fileName + ".csv");
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
}

在这个示例中,我们创建了两个 table,并为每个 table 添加了导出按钮。当用户单击导出按钮时,将调用 tableToExcel 函数并导出对应的 table。

示例 2:导出指定列

HTML 代码:

<table id="table3">
    <thead>
        <tr>
            <th>编号</th>
            <th>姓名</th>
            <th>年龄</th>
            <th>总分</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td>张三</td>
            <td>25</td>
            <td>80</td>
        </tr>
        <tr>
            <td>2</td>
            <td>李四</td>
            <td>30</td>
            <td>90</td>
        </tr>
    </tbody>
</table>
<br>
<button onclick="tableToExcel('table3','table3', [0,2])">导出table3的编号和年龄</button>

javascript 代码:

function tableToExcel(tableId, fileName, cols) {
    var table = document.getElementById(tableId);
    var rows = table.getElementsByTagName("tr");
    var arrContent = [];
    var cells = null;

    for (var i = 0; i < rows.length; i++) {
        var row = rows[i];
        if (i == 0) {
            cells = row.getElementsByTagName("th");
        } else {
            cells = row.getElementsByTagName("td");
        }
        var arrRow = [];

        for (var j = 0; j < cols.length; j++) {
            var colIndex = cols[j];
            var cell = cells[colIndex];
            arrRow.push(cell.innerHTML);
        }

        arrContent.push(arrRow.join(","));
    }

    var csvContent = "data:text/csv;charset=utf-8," + arrContent.join("\n");
    var encodedUri = encodeURI(csvContent);
    var link = document.createElement("a");
    link.setAttribute("href", encodedUri);
    link.setAttribute("download", fileName + ".csv");
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
}

在这个示例中,我们为 table3 只想导出编号和年龄两列的内容。因此,调用 tableToExcel 函数时,我们传递一个数组 [0,2],只将第 0 列和第 2 列的值添加到导出文件中。

4. 总结

本文介绍了如何使用 javascript 将 table 中的数据导出到 Excel 文件。我们讲解了实现的过程,并提供了两个示例来帮助你更深入了解该函数的应用。希望本文对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript 导出数据到Excel(处理table中的元素) - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 分析ES5和ES6的apply区别

    关于分析ES5和ES6的apply区别,我们从以下几个方面来讲解。 ES5 apply 在 ES5 中,apply 是函数的一个方法,它是为了使函数支持传递数组作为参数而存在的,它的语法如下: func.apply(thisArg, [argsArray]) 其中,thisArg 指定了函数被执行时所绑定的 this 对象,argsArray 则是一个数组,…

    Vue 2023年5月28日
    00
  • vue项目配置sass及引入外部scss文件方式

    为了让答案更加清晰明了,我会按照以下步骤逐一讲解: 安装sass-loader和node-sass 修改配置文件vue.config.js 在vue组件中使用scss 引入外部scss文件 接下来我将详细介绍。 安装sass-loader和node-sass 在使用sass前,我们需要先安装必要的依赖sass-loader和node-sass,可以使用以下命…

    Vue 2023年5月28日
    00
  • axios中如何进行同步请求(async+await)

    使用async和await可以简化较为复杂的异步代码,使其支持使用同步的方式进行处理。以下是在axios中如何进行同步请求的攻略。 步骤 在发起请求的方法前使用async关键字来声明一个异步函数; 在请求方法前加上await关键字,以等待请求的结果并将其返回。 示例代码如下: async function test() { const response = …

    Vue 2023年5月28日
    00
  • vscode 开发Vue项目的方法步骤

    下面是 VSCode 开发 Vue 项目的完整步骤攻略: 1. 安装环境 要在 VSCode 中进行 Vue 开发,首先需要安装以下环境: Node.js Vue CLI:命令行工具,用于创建和管理 Vue 项目 VSCode:代码编辑器 其中,Node.js 是运行 JavaScript 的平台,Vue CLI 是 Vue 的官方命令行工具,用于创建和管理…

    Vue 2023年5月28日
    00
  • vue 动态style 拼接宽度问题

    关于“vue动态style拼接宽度问题”的完整攻略,我们可以从以下几个方面进行讲解: 一、vue动态style的基本使用 在vue中,我们可以通过v-bind指令的方式动态绑定样式属性,例如: <div v-bind:style="{ color: activeColor, fontSize: fontSize + ‘px’ }"&…

    Vue 2023年5月27日
    00
  • Vue如何实现变量表达式选择器

    Vue中实现变量表达式选择器,需要使用Vue的计算属性computed以及Vue的模板语法。下面是完整的攻略,包括两个示例说明: 步骤一:定义计算属性 在Vue组件中,我们可以使用计算属性computed来定义一个具有getter函数的属性。该getter函数可以根据组件的数据data以及其他Vue实例的数据来计算出该计算属性的值。因此,我们可以使用计算属性…

    Vue 2023年5月27日
    00
  • 微信小程序实战基于vue2实现瀑布流的代码实例

    为了更好地讲解微信小程序实战基于vue2实现瀑布流的代码实例,我们可以按照以下步骤展开: 1. 准备工作 首先需要在本地安装 Vue-cli 和 Weex-toolkit,打开命令行窗口,输入以下命令进行安装。 npm install -g vue-cli npm install -g weex-toolkit 2. 创建项目 接着,在命令行窗口中输入以下命…

    Vue 2023年5月27日
    00
  • Vue请求JSON Server服务器数据的实现方法

    当你使用Vue来开发Web应用时,你需要获取外部数据并在网页应用中展示这些数据。JSON Server是一个快速的、简单的node.js库,可以模拟RESTful APIs,生成假数据,并对数据进行增删改查操作。下面是在Vue中如何实现JSON Server服务器数据请求。 1. 安装JSON Server 首先,你需要安装JSON Server。在命令行中…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部