- Notifications
You must be signed in to change notification settings - Fork60
Export html table to excel file in browser
JackGit/table2excel.js
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
This is a library to export html tables to excel sheets.
It has to be a row * column table
- able to export with width, alignment and colors
- extendable
ExcelJS is peer dependency totable2excel.js, so you need to install exceljs first:
npm i exceljs
then, install table2excel.js:
npm i table2excel.js
use in your code like:
importTable2Excelfrom'table2excel.js'newTable2Excel('table').export()
you may also need a config in webpack:
node:{fs:'empty'}
<scriptsrc="path/to/table2excel.min.js"></script>
<scriptsrc="path/to/exceljs.min.js"></script><scriptsrc="path/to/table2excel.core.js"></script>
consttable2Excel=newTable2Excel(selector,options)// new Table2Excel('table')table2Excel.export(fileName,extension)// table2Excel.export('my-exported-table', 'xlsx')
extension can be'xls' or'xlsx', default as'xlsx'
It's optional, and defaulted as'table'
It's optional, and defaulted as:
{workbook:{views:[{x:0,y:0,width:10000,height:20000,firstSheet:0,activeTab:1,visibility:'visible'}]},widthRatio:.14,plugins:[Table2Excel.plugins.fontPlugin,Table2Excel.plugins.fillPlugin,Table2Excel.plugins.formPlugin,Table2Excel.plugins.alignmentPlugin,Table2Excel.plugins.hyperlinkPlugin,Table2Excel.plugins.autoWidthPlugin]}
workbook is options used while creating a workbook, please referexceljs#create-a-workbook for details.
widthRatio is a ratio that will be used while convertingwidth style of html table cells to width of sheet cells.
Plugin helps to extend the ability of transforming table to excel.
Build-in plugins can be access like:
Table2Excel.plugins.fontPlugin,Table2Excel.plugins.fillPlugin,Table2Excel.plugins.formPlugin,Table2Excel.plugins.alignmentPlugin,Table2Excel.plugins.hyperlinkPlugin,Table2Excel.plugins.autoWidthPlugin
A plugin can be defined to join different phase of table to excel process, and in different phase, plugin is able to access different objects from context.
{/** * after an empty workbook created *@param {ExcelJS.Workbook} context.workbook *@param {NodeList} context.tables */workbookCreated({ workbook, tables}){},/** * after an empty worksheet created *@param {ExcelJS.Workbook} workbook *@param {NodeList} tables *@param {ExcelJS.Worksheet} worksheet *@param {HTMLTableElement} table */worksheetCreated({ workbook, tables, worksheet, table}){},/** * after a worksheet been filled with data from table *@param {ExcelJS.Workbook} workbook *@param {NodeList} tables *@param {ExcelJS.Worksheet} worksheet *@param {HTMLTableElement} table */worksheetCompleted({ workbook, tables, worksheet, table}){},/** * after an cell of worksheet created *@param {ExcelJS.Workbook} workbook *@param {NodeList} tables *@param {ExcelJS.Worksheet} worksheet *@param {HTMLTableElement} table *@param {ExcelJS.Cell} workcell *@param {HTMLTableCellElement} cell *@param {colRange} [from, to] *@param {rowRange} [from, to] */workcellCreated({ workbook, tables, worksheet, table, workcell, cell, cellStyle, colRange, rowRange}){}}
Example 1, you can define a plugin to make some rows or columns hidden of exported excel:
consttable2Excel=newTable2Excel('table',{plugins:[{worksheetCompleted({ workbook, tables, worksheet, table}){worksheet.getRow(1).hidden=trueworksheet.getColumn(1).hidden=true}}]})
Example 2, you can add your customized cell parser for your table:
consttable2Excel=newTable2Excel('table',{plugins:[{workcellCreated({ workbook, tables, worksheet, table, workcell, cell, cellStyle, rowRange, colRange}){workcell.value={text:'',link:''}workcell.style={ ...workcell.style,font:{},color:{}}}}]})
About
Export html table to excel file in browser
Topics
Resources
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors2
Uh oh!
There was an error while loading.Please reload this page.