如何用纯前端JavaScript实现两种数据导出Excel的方法?

2026-04-03 07:071阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计876个文字,预计阅读时间需要4分钟。

如何用纯前端JavaScript实现两种数据导出Excel的方法?

目录+前言+方法一+方法二+前言+修改之前的项目代码,发现前人导出Excel是用纯JavaScript实现的。并没有调用后台接口。+ 之前从未使用过,记录一下。以备不时之需。+ 方法一+将

目录
  • 前言
  • 方法一
  • 方法二

前言

修改之前项目代码的时候,发现前人导出excel是用纯javascript实现的。并没有调用后台接口。

之前从来没这么用过,记录一下。以备不时之需。

方法一

将table标签,包括tr、td等对json数据进行拼接,将table输出到表格上实现,这种方法的弊端在于输出的是伪excel,虽说生成xls为后缀的文件,但文件形式上还是html,

代码如下:

<html> <head>     <p style="font-size: 20px;color: red;">使用table标签方式将json导出xls文件</p>     <button onclick='tableToExcel()'>导出</button> </head> <body>     <script>      const tableToExcel = () => {         // 要导出的json数据         const jsonData = [             {                 name:'路人甲',                 phone:'123456',                 email:'123@123456.com'             },             {                 name:'炮灰乙',                 phone:'123456',                 email:'123@123456.com'             },             {                 name:'土匪丙',                 phone:'123456',                 email:'123@123456.com'             },             {                 name:'流氓丁',                 phone:'123456',                 email:'123@123456.com'             },         ]         // 列标题         let str = '<tr><td>姓名</td><td>电话</td><td>邮箱</td></tr>';         // 循环遍历,每行加入tr标签,每个单元格加td标签         for(let i = 0 ; i < jsonData.length ; i++ ){             str+='<tr>';             for(const key in jsonData[i]){                 // 增加 为了不让表格显示科学计数法或者其他格式                 str+=`<td>${ jsonData[i][key] + ' '}</td>`;                 }             str+='</tr>';         }         // Worksheet名         const worksheet = 'Sheet1'         const uri = 'data:application/vnd.ms-excel;base64,';           // 下载的表格模板数据         const template = `<html xmlns:o="urn:schemas-microsoft-com:office:office"         xmlns:x="urn:schemas-microsoft-com:office:excel"         xmlns="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]-->         </head><body><table>${str}</table></body></html>`;         // 下载模板         window.location.href = uri + base64(template);     };       // 输出base64编码     const base64 = s => window.btoa(unescape(encodeURIComponent(s)));     </script> </body> </html>

导出的文件后缀是xls,用office打开的时候不太友好。

然后,我发现了第二个方法

方法二

通过将json遍历进行字符串拼接,将字符串输出到csv文件,代码如下:

<html> <head>     <p style="font-size: 20px;color: red;">使用a标签方式将json导出csv文件</p>     <button onclick='tableToExcel()'>导出</button> </head> <body>     <script>     const tableToExcel = () => {         // 要导出的json数据         const jsonData = [             {                 name:'路人甲',                 phone:'123456789',                 email:'000@123456.com'             },             {                 name:'炮灰乙',                 phone:'123456789',                 email:'000@123456.com'             },             {                 name:'土匪丙',                 phone:'123456789',                 email:'000@123456.com'             },             {                 name:'流氓丁',                 phone:'123456789',                 email:'000@123456.com'             },         ];         // 列标题,逗号隔开,每一个逗号就是隔开一个单元格         let str = `姓名,电话,邮箱 `;         // 增加 为了不让表格显示科学计数法或者其他格式         for(let i = 0 ; i < jsonData.length ; i++ ){             for(const key in jsonData[i]){                 str+=`${jsonData[i][key] + ' '},`;                 }             str+=' ';         }         // encodeURIComponent解决中文乱码         const uri = 'data:text/csv;charset=utf-8,ufeff' + encodeURIComponent(str);         // 通过创建a标签实现         const link = document.createElement("a");         link.href = uri;         // 对下载的文件命名         link.download =  "json数据表.csv";         link.click();     }     </script> </body> </html>

上边的两段代码复制即可用。

到此这篇关于javascript实现纯前端将数据导出excel两种方式的文章就介绍到这了,更多相关javascript数据导出excel内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

如何用纯前端JavaScript实现两种数据导出Excel的方法?

本文共计876个文字,预计阅读时间需要4分钟。

如何用纯前端JavaScript实现两种数据导出Excel的方法?

目录+前言+方法一+方法二+前言+修改之前的项目代码,发现前人导出Excel是用纯JavaScript实现的。并没有调用后台接口。+ 之前从未使用过,记录一下。以备不时之需。+ 方法一+将

目录
  • 前言
  • 方法一
  • 方法二

前言

修改之前项目代码的时候,发现前人导出excel是用纯javascript实现的。并没有调用后台接口。

之前从来没这么用过,记录一下。以备不时之需。

方法一

将table标签,包括tr、td等对json数据进行拼接,将table输出到表格上实现,这种方法的弊端在于输出的是伪excel,虽说生成xls为后缀的文件,但文件形式上还是html,

代码如下:

<html> <head>     <p style="font-size: 20px;color: red;">使用table标签方式将json导出xls文件</p>     <button onclick='tableToExcel()'>导出</button> </head> <body>     <script>      const tableToExcel = () => {         // 要导出的json数据         const jsonData = [             {                 name:'路人甲',                 phone:'123456',                 email:'123@123456.com'             },             {                 name:'炮灰乙',                 phone:'123456',                 email:'123@123456.com'             },             {                 name:'土匪丙',                 phone:'123456',                 email:'123@123456.com'             },             {                 name:'流氓丁',                 phone:'123456',                 email:'123@123456.com'             },         ]         // 列标题         let str = '<tr><td>姓名</td><td>电话</td><td>邮箱</td></tr>';         // 循环遍历,每行加入tr标签,每个单元格加td标签         for(let i = 0 ; i < jsonData.length ; i++ ){             str+='<tr>';             for(const key in jsonData[i]){                 // 增加 为了不让表格显示科学计数法或者其他格式                 str+=`<td>${ jsonData[i][key] + ' '}</td>`;                 }             str+='</tr>';         }         // Worksheet名         const worksheet = 'Sheet1'         const uri = 'data:application/vnd.ms-excel;base64,';           // 下载的表格模板数据         const template = `<html xmlns:o="urn:schemas-microsoft-com:office:office"         xmlns:x="urn:schemas-microsoft-com:office:excel"         xmlns="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]-->         </head><body><table>${str}</table></body></html>`;         // 下载模板         window.location.href = uri + base64(template);     };       // 输出base64编码     const base64 = s => window.btoa(unescape(encodeURIComponent(s)));     </script> </body> </html>

导出的文件后缀是xls,用office打开的时候不太友好。

然后,我发现了第二个方法

方法二

通过将json遍历进行字符串拼接,将字符串输出到csv文件,代码如下:

<html> <head>     <p style="font-size: 20px;color: red;">使用a标签方式将json导出csv文件</p>     <button onclick='tableToExcel()'>导出</button> </head> <body>     <script>     const tableToExcel = () => {         // 要导出的json数据         const jsonData = [             {                 name:'路人甲',                 phone:'123456789',                 email:'000@123456.com'             },             {                 name:'炮灰乙',                 phone:'123456789',                 email:'000@123456.com'             },             {                 name:'土匪丙',                 phone:'123456789',                 email:'000@123456.com'             },             {                 name:'流氓丁',                 phone:'123456789',                 email:'000@123456.com'             },         ];         // 列标题,逗号隔开,每一个逗号就是隔开一个单元格         let str = `姓名,电话,邮箱 `;         // 增加 为了不让表格显示科学计数法或者其他格式         for(let i = 0 ; i < jsonData.length ; i++ ){             for(const key in jsonData[i]){                 str+=`${jsonData[i][key] + ' '},`;                 }             str+=' ';         }         // encodeURIComponent解决中文乱码         const uri = 'data:text/csv;charset=utf-8,ufeff' + encodeURIComponent(str);         // 通过创建a标签实现         const link = document.createElement("a");         link.href = uri;         // 对下载的文件命名         link.download =  "json数据表.csv";         link.click();     }     </script> </body> </html>

上边的两段代码复制即可用。

到此这篇关于javascript实现纯前端将数据导出excel两种方式的文章就介绍到这了,更多相关javascript数据导出excel内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

如何用纯前端JavaScript实现两种数据导出Excel的方法?