jQuery plugin to export a html table to JSON, XML, CSV, TSV, TXT, SQL, Word, Excel, PNG and PDF

Overview

tableExport.jquery.plugin

Export HTML Table to

  • CSV
  • DOC
  • JSON
  • PDF
  • PNG
  • SQL
  • TSV
  • TXT
  • XLS (Excel 2000 HTML format)
  • XLSX (Excel 2007 Office Open XML format)
  • XML (Excel 2003 XML Spreadsheet format)
  • XML (Raw xml)

Installation

To save the generated export files on client side, include in your html code:

<script type="text/javascript" src="libs/FileSaver/FileSaver.min.js"></script>

To export the table in XLSX (Excel 2007+ XML Format) format, you need to include additionally:

<script type="text/javascript" src="libs/js-xlsx/xlsx.core.min.js"></script>

To export an html table to a PDF file, you can use jsPDF-AutoTable as a PDF producer:

<script type="text/javascript" src="libs/jsPDF/jspdf.min.js"></script>
<script type="text/javascript" src="libs/jsPDF-AutoTable/jspdf.plugin.autotable.js"></script>

Many HTML stylings can be converted to PDF with jsPDF, but support for non-western character sets is almost non-existent. Especially if you want to export Arabic or Chinese characters to your PDF file, you can use pdfmake as an alternative PDF producer. The disadvantage compared to jspdf is that using pdfmake has a reduced styling capability. To use pdfmake enable the pdfmake option and instead of the jsPDF files include

<script type="text/javascript" src="libs/pdfmake/pdfmake.min.js"></script>
<script type="text/javascript" src="libs/pdfmake/vfs_fonts.js"></script>

<!-- To export arabic characters include mirza_fonts.js _instead_ of vfs_fonts.js
<script type="text/javascript" src="libs/pdfmake/mirza_fonts.js"></script>
-->

<!-- For a chinese font include either gbsn00lp_fonts.js or ZCOOLXiaoWei_fonts.js _instead_ of vfs_fonts.js 
<script type="text/javascript" src="libs/pdfmake/gbsn00lp_fonts.js"></script>
-->

To export the table in PNG format, you need to include:

<!-- For IE support include es6-promise before html2canvas -->
<script type="text/javascript" src="libs/es6-promise/es6-promise.auto.min.js"></script>
<script type="text/javascript" src="libs/html2canvas/html2canvas.min.js"></script>

Regardless of the desired format, finally include:

<script type="text/javascript" src="tableExport.min.js"></script>

Please keep this include order.

Dependencies

Library Version
jQuery >= 1.9.1
es6-promise >= 4.2.4
FileSaver >= 1.2.0
html2canvas >= 0.5.0-beta4
jsPDF >=1.3.4
jsPDF-AutoTable 2.0.14 or 2.0.17
pdfmake 0.1.65
SheetJS >= 0.12.5

Examples

// CSV format

$('#tableID').tableExport({type:'csv'});
// Excel 2000 html format

$('#tableID').tableExport({type:'excel'});
// XML Spreadsheet 2003 file format with multiple worksheet support

$('table').tableExport({type:'excel',
                        mso: {fileFormat:'xmlss',
                              worksheetName: ['Table 1','Table 2', 'Table 3']}});
// PDF export using jsPDF only

$('#tableID').tableExport({type:'pdf',
                           jspdf: {orientation: 'p',
                                   margins: {left:20, top:10},
                                   autotable: false}
                          });
// PDF format using jsPDF and jsPDF Autotable 

$('#tableID').tableExport({type:'pdf',
                           jspdf: {orientation: 'l',
                                   format: 'a3',
                                   margins: {left:10, right:10, top:20, bottom:20},
                                   autotable: {styles: {fillColor: 'inherit', 
                                                        textColor: 'inherit'},
                                               tableWidth: 'auto'}
                                  }
                          });
// PDF format with callback example

function DoCellData(cell, row, col, data) {}
function DoBeforeAutotable(table, headers, rows, AutotableSettings) {}

$('table').tableExport({fileName: sFileName,
                        type: 'pdf',
                        jspdf: {format: 'bestfit',
                                margins: {left:20, right:10, top:20, bottom:20},
                                autotable: {styles: {overflow: 'linebreak'},
                                            tableWidth: 'wrap',
                                            tableExport: {onBeforeAutotable: DoBeforeAutotable,
                                                          onCellData: DoCellData}}}
                       });
// PDF export using pdfmake

$('#tableID').tableExport({type:'pdf',
                           pdfmake:{enabled:true,
                                    docDefinition:{pageOrientation:'landscape'}}
                          });

Options (Default settings)

csvEnclosure: '"'
csvSeparator: ','
csvUseBOM: true
date: html: 'dd/mm/yyyy'
displayTableName: false  (Deprecated)
escape: false  (Deprecated)
exportHiddenCells: false
fileName: 'tableExport'
htmlContent: false
htmlHyperlink: 'content'
ignoreColumn: []
ignoreRow: []
jsonScope: 'all'
jspdf: orientation: 'p'
       unit:'pt'
       format: 'a4'
       margins: left: 20
                right: 10
                top: 10
                bottom: 10
       onDocCreated: null
       autotable: styles: cellPadding: 2
                          rowHeight: 12
                          fontSize: 8
                          fillColor: 255
                          textColor: 50
                          fontStyle: 'normal'
                          overflow: 'ellipsize'
                          halign: 'inherit'
                          valign: 'middle'
                  headerStyles: fillColor: [52, 73, 94]
                                textColor: 255
                                fontStyle: 'bold'
                                halign: 'inherit'
                                valign: 'middle'
                  alternateRowStyles: fillColor: 245
                  tableExport: doc: null
                               onAfterAutotable: null
                               onBeforeAutotable: null
                               onAutotableText: null
                               onTable: null
                               outputImages: true
mso: fileFormat: 'xlshtml'
     onMsoNumberFormat: null
     pageFormat: 'a4'
     pageOrientation: 'portrait'
     rtl: false
     styles: []
     worksheetName: ''
     xslx: formatId: date: 14
                     numbers: 2
numbers: html: decimalMark: '.'
               thousandsSeparator: ','
         output: decimalMark: '.',
                 thousandsSeparator: ','
onAfterSaveToFile: null
onBeforeSaveToFile: null
onCellData: null
onCellHtmlData: null
onCellHtmlHyperlink: null
onIgnoreRow: null
onTableExportBegin: null
onTableExportEnd: null
outputMode: 'file'
pdfmake: enabled: false
         docDefinition: pageSize: 'A4'
                        pageOrientation: 'portrait'
                        styles: header: background: '#34495E'
                                        color: '#FFFFFF'
                                        bold: true
                                        alignment: 'center'
                                        fillColor: '#34495E
                        alternateRow: fillColor: '#f5f5f5'
                        defaultStyle: color: '#000000'
                                      fontSize: 8
                                      font: 'Roboto'
         fonts: {}
preserve: leadingWS: false
          trailingWS: false
preventInjection: true
sql: tableEnclosure:  '`'
     columnEnclosure: '`' 
tbodySelector: 'tr'
tfootSelector: 'tr'
theadSelector: 'tr'
tableName: 'myTableName'
type: 'csv'

ignoreColumn can be either an array of indexes (i.e. [0, 2]) or field names (i.e. ["id", "name"]).

  • Indexes correspond to the position of the header elements th in the DOM starting at 0. (If the th elements are removed or added to the DOM, the indexes will be shifted so use the functionality wisely!)
  • Field names should correspond to the values set on the "data-field" attribute of the header elements th in the DOM.
  • "Nameless" columns without data-field attribute will be named by their index number (converted to a string)

To disable formatting of numbers in the exported output, which can be useful for csv and excel format, set the option numbers: output to false.

Set the option mso.fileFormat to 'xmlss' if you want to export in XML Spreadsheet 2003 file format. Use this format if multiple tables should be exported into a single file.

Excel 2000 html format is the default excel file format which has better support of exporting table styles.

The mso.styles option lets you define the css attributes of the original html table cells, that should be taken over when exporting to an excel worksheet (Excel 2000 html format only).

To export in XSLX format SheetJS/js-xlsx is used. Please note that the implementation of this format type lets you only export table data, but not any styling information of the html table.

Note: There is an option preventInjection (default is enabled) that prevents formula injection when exporting in CSV or Excel format. To achieve that a single quote will be prepended to cell strings that start with =,+,- or @

For jspdf options see the documentation of jsPDF and jsPDF-AutoTable resp.

There is an extended setting for jsPDF option 'format'. Setting the option value to 'bestfit' lets the tableExport plugin try to choose the minimum required paper format and orientation in which the table (or tables in multitable mode) completely fits without column adjustment.

Also there is an extended setting for the jsPDF-AutoTable options 'fillColor', 'textColor' and 'fontStyle'. When setting these option values to 'inherit' the original css values for background and text color will be used as fill and text color while exporting to pdf. A css font-weight >= 700 results in a bold fontStyle and the italic css font-style will be used as italic fontStyle.

When exporting to pdf the option outputImages lets you enable or disable the output of images that are located in the original html table.

Optional html data attributes

(can be applied while generating the table that you want to export)

data-tableexport-cellformat

<td data-tableexport-cellformat="">...</td> -> An empty data value preserves format of cell content. E.g. no number seperator conversion
                                               
                                               More cell formats to be come...

data-tableexport-colspan

<td colspan="2" data-tableexport-colspan="3">...</td> -> Overwrites the colspan attribute of the table cell during export. 
                                                         This attribute can be used if there follow hidden cells, that will be exported by using the "data-tableexport-display" attribute.

data-tableexport-display

<table style="display:none;" data-tableexport-display="always">...</table> -> A hidden table will be exported

<td style="display:none;" data-tableexport-display="always">...</td> -> A hidden cell will be exported

<td data-tableexport-display="none">...</td> -> This cell will not be exported

<tr data-tableexport-display="none">...</tr> -> All cells of this row will not be exported

data-tableexport-msonumberformat

<td data-tableexport-msonumberformat="\@">...</td> -> Data value will be used to style excel cells with mso-number-format (Excel 2000 html format only)
                                                      Format                      Description
                                                      ===================================================================================
                                                      "\@"                        Excel treats cell content always as text, even numbers
                                                      "0"                         Excel will display no decimals for numbers
                                                      "0\.000"                    Excel displays numbers with 3 decimals
                                                      "0%"                        Excel will display a number as percent with no decimals
                                                      "Percent"                   Excel will display a number as percent with 2 decimals
                                                      "\#\,\#\#0\.000"            Comma with 3 decimals
                                                      "mm\/dd\/yy"                Date7
                                                      "mmmm\ d\,\ yyyy"           Date9
                                                      "m\/d\/yy\ h\:mm\ AM\/PM"   D -T AMPM
                                                      "Short Date"                01/03/1998
                                                      "Medium Date"               01-mar-98
                                                      "d\-mmm\-yyyy"              01-mar-1998
                                                      "Short Time"                5:16
                                                      "Medium Time"               5:16 am
                                                      "Long Time"                 5:16:21:00
                                                      "0\.E+00"                   Scientific Notation
                                                      "\#\ ???\/???"              Fractions - up to 3 digits
                                                      "\0022£\0022\#\,\#\#0\.00"  £12.76
                                                      "\#\,\#\#0\.00_ \;\[Red\]\-\#\,\#\#0\.00\ "  2 decimals, negative red numbers

data-tableexport-rowspan

<td rowspan="2" data-tableexport-rowspan="3">...</td> -> Overwrites the rowspan attribute of the table cell during export. 
                                                         This attribute can be used if there follow hidden rows, that will be exported by using the "data-tableexport-display" attribute.

data-tableexport-value

<th data-tableexport-value="export title">title</th> -> "export title" instead of "title" will be exported

<td data-tableexport-value="export content">content</td> -> "export content" instead of "content" will be exported

data-tableexport-xlsxformatid

<td data-tableexport-xlsxformatid="14">...</td> -> The data value represents a format id that will be used to format the content of a cell in Excel. This data attribute overwrites the default setting of defaults.mso.xslx.formatId. 
                                                   This attribute is for Excel 2007 Office Open XML format only.
                                                   
                                                   Format id           Description
                                                   ===============================================
                                                   "1"                 0
                                                   "2"                 0.00
                                                   "3"                 #,##0
                                                   "4"                 #,##0.00
                                                   "9"                 0%
                                                   "10"                0.00%
                                                   "11"                0.00E+00
                                                   "12"                # ?/?
                                                   "13"                # ??/??
                                                   "14"                m/d/yy (will be localized by Excel)
                                                   "15"                d-mmm-yy
                                                   "16"                d-mmm
                                                   "17"                mmm-yy
                                                   "18"                h:mm AM/PM
                                                   "19"                h:mm:ss AM/PM
                                                   "20"                h:mm
                                                   "21"                h:mm:ss
                                                   "22"                m/d/yy h:mm
                                                   "37"                #,##0 ;(#,##0)
                                                   "38"                #,##0 ;[Red](#,##0)
                                                   "39"                #,##0.00;(#,##0.00)
                                                   "40"                #,##0.00;[Red](#,##0.00)
                                                   "45"                mm:ss
                                                   "46"                [h]:mm:ss
                                                   "47"                mmss.0
                                                   "48"                ##0.0E+0
                                                   "49"                @
                                                   "56"                上午/下午 hh時mm分ss秒

Excel Notes

When exporting in Excel 2000 html format (xlshtml) the default extension of the result file is XLS although the type of the file content is HTML. When you open a file in Microsoft Office Excel 2007 or later that contains content that does not match the files extension, you receive the following warning message: The file you are trying to open, 'name.ext', is in a different format than specified by the file extension. Verify that the file is not corrupted and is from a trusted source before opening the file. Do you want to open the file now? According to this Knowledge base article The warning message can help prevent unexpected problems that might occur because of possible incompatibility between the actual content of the file and the file name extension. The article also gives you some hints to disable the warning message.

Comments
  • Support data types in xlsx

    Support data types in xlsx

    Exporting numbers and date like 1.234.567,89 ("." as thousand separator and "," as decimal separator) and dates like 28/09/2019 (dd/mm/yyyy format) are correctly exported with number and date type cell if exporting in "xls" format but are bare text type cell if exported in "xlsx" format. Using the "data-tableexport-value" attribute and passing US formatted value does NOT solve the problem with "xlsx" format. Any help?

    fixed xlsx (Excel 2007) 
    opened by wonderiuy 14
  • Some browsers take a really long time to process large tables.

    Some browsers take a really long time to process large tables.

    Similar to #132, I tested a 3 column table in IE 11.0.9600, Firefox 55.0.3, and Chrome 61 (results in seconds):

    75 rows to CSV : IE 11 = 5, Firefox = 9, Chrome = 2 75 rows to XLS : IE 11 = 5, Firefox = 9, Chrome = 2 275 rows to CSV : IE 11 = 21, Firefox = 64, Chrome = 7 275 rows to XLS : IE 11 = 22, Firefox = 63, Chrome = 7 275 rows to PDF AutoTable: IE 11 = 57, Firefox = 64, Chrome = 7

    Except for IE and AutoTable, the type of output does not seem to matter very much. Is there maybe some inefficient code that prepares data for multiple output types?

    confirmed fixed 
    opened by schutze 14
  • How to export datatable with huge rows to excel file ?

    How to export datatable with huge rows to excel file ?

    Dear, I have a dataTable with 3288 rows, the export to excel is ok with dataTable arround 1000 rows but when the number of rows too many, it can't export to excel. Please help me is there anyway to fix it? Thank you.

    Q&A 
    opened by cungtienkien 13
  • Multiple worksheets and .xlsx file extension

    Multiple worksheets and .xlsx file extension

    Is it possible to have multiple tables exported in their own worksheets? If so, how? I tried using this example,

    $('table').tableExport({
            type:'excel',
            excelFileFormat:'xmlss',
            worksheetName: ['Table 1','Table 2', 'Table 3']
    });
    

    but I can't seem to get it to work. It only exports one specific table with a worksheet name 'Table 1,Table 2,Table 3'. I don't know how to get multiple tables either. Please help.

    Also when I download an excel file, its default file extension is .xml, not .xlsx. How do I fix this? I tried changing the excelFileFormat to 'xlsx' and it produces an .xls file.

    fixed xlsx (Excel 2007) 
    opened by ayellutero 11
  • New lines and html

    New lines and html

    Hallo,

    I've been experimenting for hours with this plugin. I finally decided to ask for help. I created a jsfiddle: http://jsfiddle.net/hvyowrgn/ I want wo export the table you se there.

    Thanks to "styles": {"overflow": "linebreak"}, I manage to get the entire content but there are still some improvements I'd like to see:

    1. interprete br-tags in the tablecells and display the content in a new line
    2. Interprete the b-tags and display the content bold (if posible)
    3. Adjust the column width automatically like the browser does (the last 2 columns need more space than the first ones)
    4. not most important but the first layout from https://simonbengtsson.github.io/jsPDF-AutoTable/#themes looks quite nice but doesnt seem to be default here. how comes?

    I would appreciate some hints and help with the config. I Really could'nt manage anything of this and wonder by now if everything of the above is actually posible.

    thanks!

    fixed bootstrap table feature request 
    opened by mrbeak 10
  • Please add the ability to excluse some selector into cell by class or id

    Please add the ability to excluse some selector into cell by class or id

    Hi,

    I'ts possible to add the posibility to explude some selector exportation into some cells. For example, into cells from one or several columns, i've 2 DIV, one with "data" class and the other with "data no_export" class or with diferent id. I would like to export the table but exclude the content of div with class "no_export". It's an example, but wil be a good solution.

    Q&A fixed 
    opened by manukieli 9
  • export to excel , not all data, just those pages that I have pressed the full checkbox in the head row of page

    export to excel , not all data, just those pages that I have pressed the full checkbox in the head row of page

    I use exportDataType: "selected" to export the row I selected by pressing on the checkbox, and it works well. But when I choose the full chenkbox in the head in different pages, it only exports the current page.But what I want is to export all the pages that I have pressed the full checkbox (not all data ,only those pages that I have pressed the full checkbox). And what I use is sidePagination: 'client' . Can you help me ?Thank you very much

    wontfix bootstrap table 
    opened by weiweibupt 8
  • Why the browser freeze when I try to export large tables

    Why the browser freeze when I try to export large tables

    This tool work perfectly when I try to export small tables but if I try to export a table with more than 5.000 rows. Its take a lot of time and I recieve a alert message from Windows saying Google Chrome is taking long time to response, cancel or waiting.

    Others libraries don't show this problems but is not too complete like this. There any alternative for solve this and keep using this library

    unanswerable question 
    opened by leo-def 8
  • export all row using tableExport

    export all row using tableExport

    Hi, Folks Want to know is it possible to export all rows of data using tableExport? Currently i just found export the data based on the pagination. may be have any option to set?

    Thanks

    Q&A bootstrap table 
    opened by dragscorp88 8
  • Incorrect size of cell with multiline text on PDF export

    Incorrect size of cell with multiline text on PDF export

    Hello. When I try to export table like this:

    <table id="tbl">
        <thead>
            <tr>
                <th>Title</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>
                    Very long long long long long long long long long long long long long
                    long long long long long long long long long long long long long long
                    long long long long long long long long long long long long long Message
                </td>
            </tr>
            <tr>
                <td>
                    Second row
                </td>
            </tr>
        </tbody>
    </table>
    

    to PDF format with properties:

    {type:'pdf',
      jspdf: {
        autotable: {
          styles: {overflow: 'linebreak',
            fontSize: 26,
            rowHeight: 36,
            fillColor: 155},
          headerStyles: {rowHeight: 28,
            fontSize: 38}
       }
      }
    }
    

    height of cell is too small for content showing. Incorrect size cut bottom part of text.: html to pdf cell height

    Padding and margin sizes do not change view of generated file.

    fixed 
    opened by vsisko 8
  • Download XLSX (OpenXML) files gives network error

    Download XLSX (OpenXML) files gives network error

    Hi, I'm facing the issue using last stable of tableExport (and dependencies). The code doesn't throw exceptions but when the file is being downloaded the browser returns "failed - network error". Please see the attached image: error_chrome

    I didn't write code by myself because I'm working on bootstrap-table with its "export" extension and that's based on tableExport plugin, so the underneath code is a blackbox to me. I also tried to debug non minified versions of tableExport, sheetjs and filesaver libs to check if there was some obvious problem without success.

    Googling around day-night I found someone that says that the base64 encoded string could be malformed or contain some bad data.

    This is an example of the anchor tag that is being created underneath:

    <a download="test.xlsx" rel="noopener" href="data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8;base64,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A2L3JlbGF0aW9uc2hpcHMiPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDIiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvcmVsYXRpb25zaGlwcy9tZXRhZGF0YS9jb3JlLXByb3BlcnRpZXMiIFRhcmdldD0iZG9jUHJvcHMvY29yZS54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQzIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2V4dGVuZGVkLXByb3BlcnRpZXMiIFRhcmdldD0iZG9jUHJvcHMvYXBwLnhtbCIvPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDEiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvb2ZmaWNlRG9jdW1lbnQiIFRhcmdldD0ieGwvd29ya2Jvb2sueG1sIi8PC9SZWxhdGlvbnNoaXBzPlBLAwQKAAAAAAAGY5RS0D9k3S0CAAAtAgAAGgAAAHhsL19yZWxzL3dvcmtib29rLnhtbC5yZWxzPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyIPg0KPFJlbGF0aW9uc2hpcHMgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvcmVsYXRpb25zaGlwcyIPFJlbGF0aW9uc2hpcCBJZD0icklkMSIgVHlwZT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy93b3Jrc2hlZXQiIFRhcmdldD0id29ya3NoZWV0cy9zaGVldDEueG1sIi8PFJlbGF0aW9uc2hpcCBJZD0icklkMiIgVHlwZT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy90aGVtZSIgVGFyZ2V0PSJ0aGVtZS90aGVtZTEueG1sIi8PFJlbGF0aW9uc2hpcCBJZD0icklkMyIgVHlwZT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9zdHlsZXMiIFRhcmdldD0ic3R5bGVzLnhtbCIvPjwvUmVsYXRpb25zaGlwcz5QSwECFAAKAAAAAAAGY5RS1pJ8EVoBAABaAQAAEQAAAAAAAAAAAAAAAAAAAAAAZG9jUHJvcHMvY29yZS54bWxQSwECFAAKAAAAAAAGY5RSIt2PHTMCAAAzAgAAEAAAAAAAAAAAAAAAAACJAQAAZG9jUHJvcHMvYXBwLnhtbFBLAQIUAAoAAAAAAAZjlFKt437QmSQAAJkkAAAYAAAAAAAAAAAAAAAAAOoDAAB4bC93b3Jrc2hlZXRzL3NoZWV0MS54bWxQSwECFAAKAAAAAAAGY5RSde31BUMBAABDAQAADwAAAAAAAAAAAAAAAAC5KAAAeGwvd29ya2Jvb2sueG1sUEsBAhQACgAAAAAABmOUUliHqOxaHgAAWh4AABMAAAAAAAAAAAAAAAAAKSoAAHhsL3RoZW1lL3RoZW1lMS54bWxQSwECFAAKAAAAAAAGY5RSmq0HnQEAAB0BAAADQAAAAAAAAAAAAAAAAC0SAAAeGwvc3R5bGVzLnhtbFBLAQIUAAoAAAAAAAZjlFI265b9kgcAAJIHAAATAAAAAAAAAAAAAAAAAFNNAABbQ29udGVudF9UeXBlc10ueG1sUEsBAhQACgAAAAAABmOUUkpqEflMAgAATAIAAAsAAAAAAAAAAAAAAAAAFlUAAF9yZWxzLy5yZWxzUEsBAhQACgAAAAAABmOUUtAZN0tAgAALQIAABoAAAAAAAAAAAAAAAAAi1cAAHhsL19yZWxzL3dvcmtib29rLnhtbC5yZWxzUEsFBgAAAAAJAAkAPgIAAPBZAAAAAA"></a>

    Hope this helps someone to help me because I don't know what else to check! Thanks

    opened by algi-cap 7
  • Thead bold after export and define width of columns .

    Thead bold after export and define width of columns .

    With CSV format, is there any way to make the table header bold and define the width of columns for when I open in excel the columns not have the equal size ? For example the column name i need a width 400 and value a width 100.

    Q&A csv 
    opened by ThomazWS 1
  • npm gives low vulnerability on tableexport.jquery.plugin>jspdf-autotable > jspdf > canvg                      > xmldom

    npm gives low vulnerability on tableexport.jquery.plugin>jspdf-autotable > jspdf > canvg > xmldom

    here is the output of npm audit: $ npm audit === npm audit security report ===
    Manual Review
    Some vulnerabilities require your attention to resolve
    Visit https://go.npm.me/audit-guide for additional guidance
    Low Misinterpretation of malicious XML input
    Package xmldom
    Patched in >=0.5.0
    Dependency of tableexport.jquery.plugin [dev]
    Path tableexport.jquery.plugin > jspdf-autotable > jspdf > canvg > xmldom
    More info https://npmjs.com/advisories/1650
    found 1 low severity vulnerability in 1256 scanned packages 1 vulnerability requires manual review. See the full report for details.

    confirmed 
    opened by jbieneck 1
  • export the table in excle with images

    export the table in excle with images

    Hello,

    is there a possibility to export the table in excle with images?? i have seen you have commited some code to export support image in pdf can you do it also in excel format. we need it!

    thanks

    feature request xls (Excel 2000) xlsx (Excel 2007) xml (Excel 2003) 
    opened by mingzhituo 0
  • First Heading ROW not exported only in PDF format

    First Heading ROW not exported only in PDF format

    Hi, i've a table where heading has two rows. The first row is not exported in PDF file in others format has exported well.

    is it a bug or i made a mistake?

    HEAD
    ID NAME DatePers Level1 Level2 Level3
               <thead>
                        <tr>
                            <th class="col-xs-12" colspan="6">HEAD</th>
                        </tr>
                        <tr>
                            <th class="col-xs-2" data-field="ID">ID</th>
                            <th class="col-xs-4" data-field="NAME">NAME</th>
                            <th class="col-xs-1" data-field="DATAPERS">DatePers</th>
                            <th class="col-xs-1 text-center" data-field="Level1">Level1</th>
                            <th class="col-xs-3" data-field="Level2">Level2</th>
                            <th class="col-xs-1" data-field="Level3">Level3</th>
                        </tr>
                     </thead>
    
    duplicate confirmed pdf (jsPDF) 
    opened by Aragorn2004 1
Releases(v1.26.0)
Owner
null
jQuery plugin to show a tree structure in a table

jQuery treetable jQuery treetable is a plugin for jQuery, the 'Write Less, Do More, JavaScript Library'. With this plugin you can display a tree in an

Ludo van den Boom 734 Nov 14, 2022
Luckysheet is an online spreadsheet like excel that is powerful, simple to configure, and completely open source.

English| 简体中文 Introduction ?? Luckysheet is an online spreadsheet like excel that is powerful, simple to configure, and completely open source. Links

mengshukeji 12.7k Dec 31, 2022
Live searching/filtering for HTML tables in a jQuery plugin

jQuery Filter Table Plugin This plugin will add a search filter to tables. When typing in the filter, any rows that do not contain the filter will be

Sunny Walker 175 Oct 29, 2022
jQuery plugin to make HTML tables responsive

FooTable V3 This is a complete re-write of the plugin. There is no upgrade path from V2 to V3 at present as the options and the way the code is writte

FooPlugins 2.1k Dec 19, 2022
el-table awlays show horizontal-scroller on bottom

el-table awlays show horizontal-scroller on bottom

Edward Mizuka 24 Dec 1, 2022
A JQuery plugin to create AJAX based CRUD tables.

What is jTable http://www.jtable.org jTable is a jQuery plugin used to create AJAX based CRUD tables without coding HTML or Javascript. It has several

Volosoft 1.1k Dec 21, 2022
jQuery grid plugin

jqGrid jQuery grid plugin jqGrid is an Ajax-enabled JavaScript control that provides solutions for representing and manipulating tabular data on the w

Tony Tomov 2.8k Jan 7, 2023
Lightweight Grid jQuery Plugin

jsGrid Lightweight Grid jQuery Plugin Project site js-grid.com jsGrid is a lightweight client-side data grid control based on jQuery. It supports basi

Artem Tabalin 1.5k Dec 31, 2022
jQuery plugin for stacking tables on small screens

stacktable.js The Responsive Tables jQuery plugin for stacking tables on small screens. The purpose of stacktable.js is to give you an easy way of con

John Polacek 1k Nov 30, 2022
Fixed . Doesn't need any custom css/html. Does what position:sticky can't

jquery.floatThead Documentation & Examples: http://mkoryak.github.io/floatThead/ Float the table header on scroll. No changes to your HTML/CSS are req

Misha Koryak 1.2k Dec 6, 2022
An Obsidian plugin to provide an editor for Markdown tables

An Obsidian plugin to provide an editor for Markdown tables. It can open CSV data and data from Microsoft Excel, Google Sheets, Apple Numbers and LibreOffice Calc as Markdown tables from Obsidian Markdown editor.

Ganessh Kumar 112 Dec 31, 2022
JavaScript data grid with a spreadsheet look & feel. Works for React, Angular, and Vue. Supported by the Handsontable team ⚡

Handsontable is a JavaScript component that combines data grid features with spreadsheet-like UX. It provides data binding, data validation, filtering

Handsontable 17.4k Dec 28, 2022
A simple, modern and interactive datatable library for the web

Frappe DataTable A modern datatable library for the web Introduction Frappe DataTable is a simple, modern and interactive datatable library for displa

Frappe 836 Dec 24, 2022
Nice, sleek and intuitive. A grid control especially designed for bootstrap.

jQuery Bootgrid Plugin Nice, sleek and intuitive. A grid control especially designed for bootstrap. Getting Started jQuery Bootgrid is a UI component

Rafael Staib 976 Dec 16, 2022
Shrinks any large data tables into compact and responsive tables

jquery.table-shrinker A Jquery plugin to make HTML Table responsive across all devices, the right way! Demo Click here to see the demo, remember to re

null 29 Sep 11, 2022
JQuery-TableToExcel - Light weight jQuery plugin for export HTML table to excel file

tableToExcel Light weight jQuery plugin for export table to excel file Demos Website and demo here: http://tanvirpro.com/all_project/jQueryTableToExce

Tanvir Sarker 4 May 8, 2022
AlaSQL.js - JavaScript SQL database for browser and Node.js. Handles both traditional relational tables and nested JSON data (NoSQL). Export, store, and import data from localStorage, IndexedDB, or Excel.

Please use version 1.x as prior versions has a security flaw if you use user generated data to concat your SQL strings instead of providing them as a

Andrey Gershun 6.1k Jan 9, 2023
Boost is a Microsoft Excel Add-in to help developers import large excel workbooks into their database using SQL queries

Microsoft Excel Add-in for Developers About Us Boost is a Microsoft Excel Add-in to help developers import large excel workbooks into their database u

OSLabs Beta 30 Sep 30, 2022
Export your HTML table to Excel format.

excelExport Export your HTML tables to Excel format. Doc Installation Simply import JQuery & excel-export into your HTML. <script src="https://code.jq

Zenoo 1 Apr 22, 2021
A Javascript library to export svg charts from the DOM and download them as an SVG file, PDF, or raster image (JPEG, PNG) format. Can be done all in client-side.

svg-exportJS An easy-to-use client-side Javascript library to export SVG graphics from web pages and download them as an SVG file, PDF, or raster imag

null 23 Oct 5, 2022