追风小马仔
2016-12-31 16:53:10
关于tableExport导出excel的中文乱码的demo
最近项目中用到tableExport这个插件,遇到中文乱码的问题。查找了好多资料,并完美解决:再次贡献源码,希望更多地人受益。
把从官网下载的tableExport.js文件替换成以下的代码,即可成功!
(function($){ $.fn.extend({ tableExport: function(options) { var defaults = { separator: ',', ignoreColumn: [], tableName:'yourTableName', type:'csv', pdfFontSize:14, pdfLeftMargin:20, escape:'true', htmlContent:'false', consoleLog:'false' }; var options = $.extend(defaults, options); var el = this; if(defaults.type == 'csv' || defaults.type == 'txt'){ // Header var tdData =""; $(el).find('thead').find('tr').each(function() { tdData += "\n"; $(this).filter(':visible').find('th').each(function(index,data) { if ($(this).css('display') != 'none'){ if(defaults.ignoreColumn.indexOf(index) == -1){ tdData += '"' + parseString($(this)) + '"' + defaults.separator; } } }); tdData = $.trim(tdData); tdData = $.trim(tdData).substring(0, tdData.length -1); }); // Row vs Column $(el).find('tbody').find('tr').each(function() { tdData += "\n"; $(this).filter(':visible').find('td').each(function(index,data) { if ($(this).css('display') != 'none'){ if(defaults.ignoreColumn.indexOf(index) == -1){ tdData += '"'+ parseString($(this)) + '"'+ defaults.separator; } } }); //tdData = $.trim(tdData); tdData = $.trim(tdData).substring(0, tdData.length -1); }); //output if(defaults.consoleLog == 'true'){ console.log(tdData); } var base64data = "base64," + $.base64.encode(tdData); window.open('data:application/'+defaults.type+';filename=exportData;' + base64data); }else if(defaults.type == 'sql'){ // Header var tdData ="INSERT INTO `"+defaults.tableName+"` ("; $(el).find('thead').find('tr').each(function() { $(this).filter(':visible').find('th').each(function(index,data) { if ($(this).css('display') != 'none'){ if(defaults.ignoreColumn.indexOf(index) == -1){ tdData += '`' + parseString($(this)) + '`,' ; } } }); tdData = $.trim(tdData); tdData = $.trim(tdData).substring(0, tdData.length -1); }); tdData += ") VALUES "; // Row vs Column $(el).find('tbody').find('tr').each(function() { tdData += "("; $(this).filter(':visible').find('td').each(function(index,data) { if ($(this).css('display') != 'none'){ if(defaults.ignoreColumn.indexOf(index) == -1){ tdData += '"'+ parseString($(this)) + '",'; } } }); tdData = $.trim(tdData).substring(0, tdData.length -1); tdData += "),"; }); tdData = $.trim(tdData).substring(0, tdData.length -1); tdData += ";"; //output //console.log(tdData); if(defaults.consoleLog == 'true'){ console.log(tdData); } var base64data = "base64," + $.base64.encode(tdData); window.open('data:application/sql;filename=exportData;' + base64data); }else if(defaults.type == 'json'){ var jsonHeaderArray = []; $(el).find('thead').find('tr').each(function() { var tdData =""; var jsonArrayTd = []; $(this).filter(':visible').find('th').each(function(index,data) { if ($(this).css('display') != 'none'){ if(defaults.ignoreColumn.indexOf(index) == -1){ jsonArrayTd.push(parseString($(this))); } } }); jsonHeaderArray.push(jsonArrayTd); }); var jsonArray = []; $(el).find('tbody').find('tr').each(function() { var tdData =""; var jsonArrayTd = []; $(this).filter(':visible').find('td').each(function(index,data) { if ($(this).css('display') != 'none'){ if(defaults.ignoreColumn.indexOf(index) == -1){ jsonArrayTd.push(parseString($(this))); } } }); jsonArray.push(jsonArrayTd); }); var jsonExportArray =[]; jsonExportArray.push({header:jsonHeaderArray,data:jsonArray}); //Return as JSON //console.log(JSON.stringify(jsonExportArray)); //Return as Array //console.log(jsonExportArray); if(defaults.consoleLog == 'true'){ console.log(JSON.stringify(jsonExportArray)); } var base64data = "base64," + $.base64.encode(JSON.stringify(jsonExportArray)); window.open('data:application/json;filename=exportData;' + base64data); }else if(defaults.type == 'xml'){ var xml = '<?xml version="1.0" encoding="utf-8"?>'; xml += '<tabledata><fields>'; // Header $(el).find('thead').find('tr').each(function() { $(this).filter(':visible').find('th').each(function(index,data) { if ($(this).css('display') != 'none'){ if(defaults.ignoreColumn.indexOf(index) == -1){ xml += "<field>" + parseString($(this)) + "</field>"; } } }); }); xml += '</fields><data>'; // Row Vs Column var rowCount=1; $(el).find('tbody').find('tr').each(function() { xml += '<row id="'+rowCount+'">'; var colCount=0; $(this).filter(':visible').find('td').each(function(index,data) { if ($(this).css('display') != 'none'){ if(defaults.ignoreColumn.indexOf(index) == -1){ xml += "<column-"+colCount+">"+parseString($(this))+"</column-"+colCount+">"; } } colCount++; }); rowCount++; xml += '</row>'; }); xml += '</data></tabledata>' if(defaults.consoleLog == 'true'){ console.log(xml); } var base64data = "base64," + $.base64.encode(xml); window.open('data:application/xml;filename=exportData;' + base64data); }else if(defaults.type == 'excel' || defaults.type == 'doc'|| defaults.type == 'powerpoint' ){ var excel="<table>"; // Header $(el).find('thead').find('tr').each(function() { excel += "<tr>"; // $(this).filter(':visible') $(this).find('th').each(function(index,data) { if ($(this).css('display') != 'none'){ if(defaults.ignoreColumn.indexOf(index) == -1){ var colspan = $(this).attr('colspan'); if(!colspan) colspan = 1; excel += "<td style='text-align: center; vertical-align: middle;' colspan='" + colspan + "'>" + parseString($(this))+ "</td>"; } } }); // $(this).filter(':visible') $(this).find('td').each(function(index,data) { if ($(this).css('display') != 'none'){ if(defaults.ignoreColumn.indexOf(index) == -1){ var colspan = $(this).attr('colspan'); var rowspan = $(this).attr('rowspan'); if(!colspan) colspan = 1; if(!rowspan) rowspan = 1; excel += "<td style='text-align:center;' colspan='" + colspan + "' rowspan='" + rowspan + "'>" + parseString($(this))+ "</td>"; } } }); excel += '</tr>'; }); // Row Vs Column var rowCount=1; $(el).find('tbody').find('tr').each(function() { excel += "<tr>"; var colCount=0; // $(this).filter(':visible') $(this).find('td').each(function(index,data) { if ($(this).css('display') != 'none'){ if(defaults.ignoreColumn.indexOf(index) == -1){ var rowspan = $(this).attr('rowspan'); if(!rowspan) rowspan = 1; excel += "<td rowspan='" + rowspan + "' style='color:" + $(this).css('color') + "'>"+parseString($(this))+"</td>"; } } colCount++; }); rowCount++; excel += '</tr>'; }); excel += '</table>' if(defaults.consoleLog == 'true'){ console.log(excel); } var excelFile = "<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:"+defaults.type+"' xmlns='http://www.w3.org/TR/REC-html40'>"; excelFile += "<head>"; excelFile += "<!--[if gte mso 9]>"; excelFile += "<xml>"; excelFile += "<x:ExcelWorkbook>"; excelFile += "<x:ExcelWorksheets>"; excelFile += "<x:ExcelWorksheet>"; excelFile += "<x:Name>"; excelFile += "{worksheet}"; excelFile += "</x:Name>"; excelFile += "<x:WorksheetOptions>"; excelFile += "<x:DisplayGridlines/>"; excelFile += "</x:WorksheetOptions>"; excelFile += "</x:ExcelWorksheet>"; excelFile += "</x:ExcelWorksheets>"; excelFile += "</x:ExcelWorkbook>"; excelFile += "</xml>"; excelFile += "<![endif]-->"; excelFile += "</head>"; excelFile += "<body>"; excelFile += excel; excelFile += "</body>"; excelFile += "</html>"; var base64data = "base64," + $.base64({ data: excelFile, type: 0 }); //window.open('data:application/vnd.ms-'+defaults.type+';filename=exportData.doc;' + base64data); $('<a style="display:none" href="data:application/vnd.ms-'+defaults.type+';filename=exportData.doc;'+base64data+'" download="'+defaults.tableName.toString()+'.xls"><span></span></a>').appendTo(document.body).find('span').trigger("click").parent().remove(); }else if(defaults.type == 'png'){ html2canvas($(el), { onrendered: function(canvas) { var img = canvas.toDataURL("image/png"); window.open(img); } }); }else if(defaults.type == 'pdf'){ var doc = new jsPDF('p','pt', 'a4', true); doc.setFontSize(defaults.pdfFontSize); // Header var startColPosition=defaults.pdfLeftMargin; $(el).find('thead').find('tr').each(function() { $(this).filter(':visible').find('th').each(function(index,data) { if ($(this).css('display') != 'none'){ if(defaults.ignoreColumn.indexOf(index) == -1){ var colPosition = startColPosition+ (index * 50); doc.text(colPosition,20, parseString($(this))); } } }); }); // Row Vs Column var startRowPosition = 20; var page =1;var rowPosition=0; $(el).find('tbody').find('tr').each(function(index,data) { rowCalc = index+1; if (rowCalc % 26 == 0){ doc.addPage(); page++; startRowPosition=startRowPosition+10; } rowPosition=(startRowPosition + (rowCalc * 10)) - ((page -1) * 280); $(this).filter(':visible').find('td').each(function(index,data) { if ($(this).css('display') != 'none'){ if(defaults.ignoreColumn.indexOf(index) == -1){ var colPosition = startColPosition+ (index * 50); doc.text(colPosition,rowPosition, parseString($(this))); } } }); }); // Output as Data URI doc.output('datauri'); } function parseString(data){ if(defaults.htmlContent == 'true'){ content_data = data.html().trim(); }else{ content_data = data.text().trim(); } if(defaults.escape == 'true'){ content_data = escape(content_data); } return content_data; } } }); })(jQuery);
猜你喜欢
- java poi 导出excel表格
- struts2 poi导出excel实例代码下载
- Sturts2导出Excel简单demo
- springboot2+mybatis+EasyExcel实现从mysql数据库在线导出excel文件
- apache poi导出Excel或Pdf文件的工具类
- java 通过Apache poi导出excel代码demo实例
- springboot整合easyexcel实现excel文件上传解析,下载导出简单实例
- nodejs实现从mysql数据库中导出excel报表,支持按日期导出
- java实现一个配置简单功能强大的excel工具类,搞定大多数excel文件导入导出
- 使用JSP+jqueryUI+java Servlet通过Apache POI实现Excel导入导出
- java Excel导入导出工具类icexls实例(导入导出各只需两行代码)
- java通过jxls框架实现导入导出excel文件实例
请下载代码后再发表评论
相关代码
- 原证 springboot+mybatis+apache poi实现把excel文件导入数据库
- java poi读取excel
- 证 springboot2+mybatis+EasyExcel实现从mysql数据库在线导出excel文件
- java jxls生成excel实例
- java poi 导出excel表格
- 原证 springboot整合easyexcel实现excel文件上传解析,下载导出简单实例
- struts2 poi导出excel实例代码下载
- 原 jxl操作xls的excel文件java工具类
- golang读取excel文件生成SQL语句
- 原 maven工程采用xxl-excel框架实现excel的输入输出excel文件,支持xlsx、xls格式
- 原 java实现一个配置简单功能强大的excel工具类,搞定大多数excel文件导入导出
- jsp利用JXL包实现excel表的输出
最近下载
最近浏览
镜影 LV3
2023年9月14日
Ckxlnd LV13
2022年7月6日
tansuo阿郎 LV8
2021年11月29日
liangge2115 LV27
2021年11月23日
雨凤凰 LV4
2021年8月25日
最代码_码鑫源 LV6
2021年7月8日
chieftain
2021年6月30日
暂无贡献等级
zwt689 LV2
2021年6月23日
maolv100k LV1
2021年6月10日
z1433151083 LV9
2021年5月27日