`
javazbpm
  • 浏览: 3082 次
社区版块
存档分类
最新评论

js导出table

 
阅读更多
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>ExportTablesToExcel</title>
    <script src="js/echarts.js"></script>
    <script src="js/jquery.js"></script>
</head>
<style>
    #tabDiv1,#tabDiv2,#tabDiv3{border:1px solid pink;margin:10px auto;width:100%; }
    button{width:100%;}
</style>
<body>
<div id="tablesDiv">
    <table id="tabDiv1">
        <tr>
            <td>ID</td>
            <td>姓名</td>
            <td>年龄</td>
        </tr>
        <tr>
            <td>0001</td>
            <td>张三</td>
            <td>24</td>
        </tr>
    </table>
    <table id="tabDiv2">
        <tr>
            <td>ID</td>
            <td>姓名</td>
            <td>年龄</td>
        </tr>
        <tr>
            <td>0002</td>
            <td>李四</td>
            <td>24</td>
        </tr>
    </table>
    <table id="tabDiv3">
        <tr>
            <td>ID</td>
            <td>姓名</td>
            <td>年龄</td>
        </tr>
        <tr>
            <td>0003</td>
            <td>王五</td>
            <td>24</td>
        </tr>
    </table>
    <button onclick="exp();">export to excel...</button>
</div>
</body>
<script>
    function exp(){
        tablesToExcel(['tabDiv1','tabDiv2','tabDiv3'], ['sheet1','sheet2','sheet3'], "testExport.xls", "Excel");
    }
    //导出excel包含多个sheet
    //tables:tableId的数组;wsbames:sheet的名字数组;wbname:工作簿名字;appname:Excel
function tablesToExcel(tables, wsnames, wbname, appname){

        var uri = 'data:application/vnd.ms-excel;base64,'
, tmplWorkbookXML = '<?xml version="1.0"?><?mso-application progid="Excel.Sheet"?><Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">'
+ '<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"><Author>Axel Richter</Author><Created>{created}</Created></DocumentProperties>'
+ '<Styles>'
+ '<Style ss:ID="Currency"><NumberFormat ss:Format="Currency"></NumberFormat></Style>'
+ '<Style ss:ID="Date"><NumberFormat ss:Format="Medium Date"></NumberFormat></Style>'
+ '</Styles>'
+ '{worksheets}</Workbook>'
, tmplWorksheetXML = '<Worksheet ss:Name="{nameWS}"><Table>{rows}</Table></Worksheet>'
, tmplCellXML = '<Cell{attributeStyleID}{attributeFormula}><Data ss:Type="{nameType}">{data}</Data></Cell>'
, base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) }
            , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) }

        var ctx = "";
        var workbookXML = "";
        var worksheetsXML = "";
        var rowsXML = "";

        for (var i = 0; i < tables.length; i++) {
            if (!tables[i].nodeType) tables[i] = document.getElementById(tables[i]);

//           控制要导出的行数
for (var j = 0; j < tables[i].rows.length; j++) {
                rowsXML += '<Row>';

                for (var k = 0; k < tables[i].rows[j].cells.length; k++) {
                    var dataType = tables[i].rows[j].cells[k].getAttribute("data-type");
                    var dataStyle = tables[i].rows[j].cells[k].getAttribute("data-style");
                    var dataValue = tables[i].rows[j].cells[k].getAttribute("data-value");
                    dataValue = (dataValue)?dataValue:tables[i].rows[j].cells[k].innerHTML;
                    var dataFormula = tables[i].rows[j].cells[k].getAttribute("data-formula");
                    dataFormula = (dataFormula)?dataFormula:(appname=='Calc' && dataType=='DateTime')?dataValue:null;
                    ctx = {  attributeStyleID: (dataStyle=='Currency' || dataStyle=='Date')?' ss:StyleID="'+dataStyle+'"':''
                            , nameType: (dataType=='Number' || dataType=='DateTime' || dataType=='Boolean' || dataType=='Error')?dataType:'String'
                            , data: (dataFormula)?'':dataValue
                            , attributeFormula: (dataFormula)?' ss:Formula="'+dataFormula+'"':''
                          };
                    rowsXML += format(tmplCellXML, ctx);
                }
                rowsXML += '</Row>'
}
            ctx = {rows: rowsXML, nameWS: wsnames[i] || 'Sheet' + i};
            worksheetsXML += format(tmplWorksheetXML, ctx);
            rowsXML = "";
        }

        ctx = {created: (new Date()).getTime(), worksheets: worksheetsXML};
        workbookXML = format(tmplWorkbookXML, ctx);

//       查看后台的打印输出
        //console.log(workbookXML);

var link = document.createElement("A");
        link.href = uri + base64(workbookXML);
        link.download = wbname || 'Workbook.xls';
        link.target = '_blank';
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link);

    }
</script>
</html>
分享到:
评论

相关推荐

    js导出table 可自定义导出文件名,可导出css样式

    js导出table 可自定义导出文件名,可导出css样式,也是我在项目中用到的,希望可以帮助到大家,里面有注释讲解

    js 导出table为excel/csv/png/txt/doc文件(支持中文)

    3. **Excel导出**:JavaScript无法直接创建Excel文件,但可以借助库如`xlsx`或` SheetJS`。它们提供API来构造工作簿对象,并将其转换为二进制流。对于中文,需设置正确的字符编码,如`utf8`。 4. **PNG导出**:将...

    js操作table导出excel

    在JavaScript开发中,有时我们需要将HTML表格的数据导出为Excel文件,以便用户可以方便地存储和处理数据。本文将深入探讨如何使用JavaScript、jQuery和HTML来实现这一功能,特别是通过JavaScript操作HTML表格来生成...

    【JavaScript源代码】纯JS将table表格导出到excel的方法.docx

    总的来说,纯JavaScript导出HTML表格到Excel涉及到的主要知识点包括: 1. DOM遍历:获取表格数据。 2. Blob对象:创建二进制文件。 3. URL.createObjectURL:创建可下载的URL。 4. 文件下载:模拟文件下载操作(非...

    js导出table表格数据(包括excel,xml,json,csv等格式)

    js导出table表格数据(包括excel,xml,json,csv等格式)

    tableExport.js实现前端表格的导出功能(支持中文)及打印

    该插件可以将Html的表格导出成为 JSON, XML, CSV, TSV, ...在项目上遇到pdf导出中文乱码问题,经过一天的研究修改了一些js代码解决了pdf导出中文乱码问题,随便融入了一个html打印功能的js,有需要的可以下载来看看。

    bootstrap table 导出文件 bootstrap-table-export.js和tableExport.js

    用于bootstrap数据表格的导出插件,在引入bootstrap其他主要js和css的前提下,再将bootstrap-table-export.js和tableExport.js引入。包里有两个版本的

    html页面表格导出excel(原生js浏览器全兼容)

    在网页开发中,有时我们...提供的`js浏览器导出Excel`资源应该包含了一个示例,你可以参考这个示例代码来理解并应用到自己的项目中。这种方法简单易用,适用于各种网页表格导出需求,极大地提高了前端开发的灵活性。

    js前端导出table到excel

    这是一个前端通过js导出页面的table生成并下载excel的demo

    table导出Excel项目

    加压后可以直接运行,主要包含1、table_export.html,内容:tableExport.js导出table成Excel (不支持IE) 2、new_file.html 内容:无插件、原生js导出table成Excel(支持IE\谷歌等主流浏览器)

    前端页面导出table中的内容到excel

    通过以上技术,开发者可以在前端页面上实现将table表格数据导出为Excel的功能,提供用户友好的数据交互体验。在实际项目中,结合具体的业务需求和现有技术栈,选择合适的方法和库,可以高效地完成这一任务。

    table转Excel,可导出图片,亲测有效

    javascript代码可以将HTML的table表格转换成excel表格。var table = document.getElementById("table")[removed]; export2Excel(table, '导出.xls');

    jquery.table2excel.js(用于table导出Excel文件)

    总的来说,`jquery.table2excel.js`提供了一个简洁的解决方案,让Web开发者能够快速为用户提供表格数据导出到Excel的功能。通过合理的配置和适当的HTML、CSS、JavaScript代码,你可以创建出满足用户需求的导出体验。...

    js实现导出table到excel

    javascri实现将table中数据保存到excel中

    tableExport 前端数据导出工具

    除了基本的导出功能,TableExport还可以与其他前端库结合使用,例如结合jQuery或Vue.js进行更复杂的数据操作。此外,还可以利用FileSaver.js库实现下载功能,让导出的数据直接保存到用户的本地文件系统。 ### 注意...

    bootstrap导出table插件

    为了实现这个功能,我们可以利用“bootstrap导出table插件”。 这个插件,正如其名,是为了增强Bootstrap表格的功能,使其能够方便地将表格数据导出为各种格式,如CSV、Excel、PDF等。这在需要将网页上的数据保存到...

    FileSaver.js用于table导出Excel

    总的来说,FileSaver.js和tableExport.js是前端开发中非常实用的工具,它们可以帮助我们实现从网页表格直接导出Excel的功能。理解并掌握这两个库的使用方法,对于提升用户体验,优化Web应用功能具有重要的价值。在...

    前端导出Excel table2excel

    要设置不导出的列,我们需要在JavaScript代码中进行配置。这通常涉及到遍历表格的列,根据业务需求决定哪些列需要被导出,哪些不需要。例如,我们可以创建一个数组,列出需要排除的列索引,然后在转换函数中排除这些...

    jquery.table2excel.js 导出可居中

    bootstraptable 可以直接导出的插件,导出内容自动居中处理 https://blog.csdn.net/qq_39087348/article/details/112970600

Global site tag (gtag.js) - Google Analytics