JS导出excel插件总结

目前找到的几种用来导出Excel的插件就是这些,其余的还有一个需要jQuery2.0以上的版本,或者是不更新了的,就不在这里了

ExcellentExport.js–Table to Excel


后面半句是我加的,它主要就是个抓取table标签,然后导出为Excel的插件,支持导出xls、CSV,很简单的一款插件,参数填上table id即可:
优点:傻瓜式导出table
缺点:功能单一,比较局限。

<table id="datatable">
    <tr>
        <td>100</td> <td>200</td> <td>300</td>
    </tr>
    <tr>
        <td>400</td> <td>500</td> <td>600</td>
    </tr>
</table>

<a download="somedata.xls" href="#" onclick="return ExcellentExport.excel(this, 'datatable', 'Sheet Name Here');">Export to Excel</a>
<a download="somedata.csv" href="#" onclick="return ExcellentExport.csv(this, 'datatable');">Export to CSV</a>

Exceljs


github:https://github.com/guyonroche/exceljs
优点:对单元格的定制很全面,适合对表格样式有要求的人
缺点:选项多就意味着代码多,另外支持的格式不够丰富(这句是给下一个做铺垫的)

//Interface
var Excel = require('exceljs');

//Create a Workbook
var workbook = new Excel.Workbook();

//Set Workbook Properties
workbook.creator = 'Me';
workbook.lastModifiedBy = 'Her';
workbook.created = new Date(1985, 8, 30);
workbook.modified = new Date();
workbook.lastPrinted = new Date(2016, 9, 27);
// Set workbook dates to 1904 date system 
workbook.properties.date1904 = true;

js-xlsx


优点:支持格式最全面,尤其是读取文件方面,什么老古董格式都能读取,有很多延伸插件,可以选择使用
缺点:不是很好弄,相比较而言还是麻烦一些的。
代码就不贴了, github里面有三个例子,各种导出都有。
关键点:

  • Exceljs和js-xlsx都有关于使用node和不使用node的不同用法,注意区别使用,不过看似node用法很简单
  • 需要用到require()的地方是node的部分,可以参考我的另一篇关于requirejs的文章,例子中用到require()的地方跳过即可
  • 如何建立一个workbook并设置相关的内容:
data = [[A1, A2, A3][B1, B2, B3]];
function Workbook() {
    if(!(this instanceof Workbook)) {return new Workbook();}
    this.SheetNames = [];
    this.Sheets = {};
}
var wb = new Workbook(), ws = sheet_from_array_of_arrays(data);
wb.SheetNames.push(ws_name);    //随便起,字符串也好传变量也好
wb.Sheets[ws_name] = ws;

//如果要设置单元格的宽度
//1.设置一组(也有px版的,wch改为wpx即可)
var wswch = [
    {wch:12},
    {wch:25},
    {wch:5},
    {wch:10},
    {wch:20},
    {wch:30}
];
ws['!cols']= wswch;
//2.在for循环里一个一个的设置,这种情况比较适合只对单个单元格有改动的情况,很简单,就不上代码了
//其余的部分github上的demo里有,都可以参考
发布了34 篇原创文章 · 获赞 4 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/Tianyi_liang/article/details/62893471