js导出Excel表格-方法一

合集下载

vue中使用js-xlsx导出excel文件(可以修改样式)

vue中使用js-xlsx导出excel文件(可以修改样式)

vue中使⽤js-xlsx导出excel⽂件(可以修改样式)前端vue中使⽤js-xlsx导出excel⽂件(可以修改样式)使⽤js-xlsx是因为有个需求是要把⽤户上传的xmind⽂件转excel⽂件导出,当时有点懵,在⽹上找了许多资料发现了前端有如下⼏种⽅法可导出excel⽂件(⽅法有许多但原理都是⼀样的)1.通过js的Blob与Object URL把html表格直接导出注意:只能导出为xls格式的excel⽂件,且实际导出的就是⼀个html⽂档。

但是因为导出的是html所以就可以在保留html表格原有的样式了。

2.使⽤ActiveXObject对象来创建excel⽂件写⼊数据导出注意:只能在ie下使⽤因为只有ie下有ActiveXObject对象3.使⽤jquery的tabletoexcle.js库来导出4.使⽤js-xlsx来导出excel⽂件修改样式需要使⽤xlsx-stylevue中使⽤xlsx的详细步骤安装xlsx插件(需要修改样式的话安装xlsx-style)$ npm install --save xlsx$ npm install --save xlsx-style在需要使⽤的vue⽂件中引⼊import XLSX from "xlsx"如果引⼊xlsx-style的话可能会报错:This relative module was not found:./cptable in ./node_modules/xlsx-style@0.8.13@xlsx-style/dist/cpexcel.js我也不知道是啥问题⼀引⼊就报错有点搞不懂(有⼤佬知道可以回复下(*^_^*))后⾯找到原因了…: 是因为在\node_modules\xlsx-style\dist\cpexcel.js 807⾏的 var cpt = require(’./cpt’ + ‘able’); 这⾥的require("./cptable") 其实没有这个⽂件我参照了xlsx的cpexcel.js这个⽂件的同⼀地⽅是 var cpt = cptable; 所以后⾯改成这个以后引⼊就没问题了具体咋回事也不清楚。

js导出excel增加表头、mso-number-format定义数据格式

js导出excel增加表头、mso-number-format定义数据格式

js导出excel增加表头、mso-number-format定义数据格式问题1:增加表头 js导出表格时,只会导出table⾥的展现出的内容,如需增加表头等内容需要在页⾯获取的字符串中拼接表头的相关字符串,详细介绍如下:tableString:新增的表头内容字符串;ctx.table: 新增的表头+页⾯获取的table字符串。

这样,表头就加上了,还可以通过style设置它的样式:问题2:mso-number-format定义数据格式  在做项⽬时遇到mso-number-format定义的科学计数法转化格式与⾦额定义的向右对齐样式有冲突。

 之前有写过篇博客专门记述mso-number-format定义科学计数法转化格式。

当使⽤这种⽅法导出⽂件时,有时会遇到⼀个问题,就是导出的Excel 经常会把我们的数据⾃动识别为其他格式,例如只有纯数字的字段在导出到 Excel后会被⾃动识别为数字格式,⽽⼀旦数字超过11位,Excel便会将其以科学计数法的形式来显⽰,⽐如⾝份证号码,带区号的电话号码等。

mso-number-format的属性设置书写如下:<td style='mso-number-format:\"\@\";' class='tdRight'> class='tdRight' 是设置右对齐样式,这样就有冲突,class定义的样式不起作⽤。

要想避免冲突,正确的写法是:<td style='mso-number-format:\"\@\"; text-align:right;' class='tdRight'>" 只需要把样式都写在style⾥即可,是不是简单的让⼈抓狂。

注意:class='tdRight' 不可以去掉,因为此处的td是通过append到页⾯的,页⾯的样式还需要class来定义向右对齐。

react使用js-xlsx插件导出多级表头excel的公共方法

react使用js-xlsx插件导出多级表头excel的公共方法

react使用js-xlsx插件导出多级表头excel的公共方法使用`js-xlsx`插件在React中导出多级表头Excel的公共方法可以按照以下步骤进行:首先,你需要安装`js-xlsx`和`file-saver`这两个库。

你可以通过npm或yarn进行安装:```bashnpm install js-xlsx file-saver# 或者yarn add js-xlsx file-saver```然后,你可以创建一个公共方法来处理Excel的导出。

下面是一个基本的例子:```javascriptimport React from 'react';import { saveAs } from 'file-saver';import XLSX from 'js-xlsx';// 创建一个导出Excel的公共方法export function exportExcel(data, sheetName, multipleHeaders) {const worksheet = XLSX.utils.json_to_sheet(data, multipleHeaders); const workbook = { Sheets: { [sheetName]: worksheet }, SheetNames: [sheetName] };const excelBuffer = XLSX.write(workbook, { type: 'buffer', bookType: 'xlsx' });const blob = new Blob([excelBuffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });saveAs(blob, 'data.xlsx');}```在这个方法中,`data`是一个对象数组,每个对象代表一行数据。

js导入导出excel(实例代码)

js导入导出excel(实例代码)

js导⼊导出excel(实例代码)复制代码代码如下:<html xmlns="/1999/xhtml" ><head><title>Untitled Page</title></head><script language="javascript" type="text/javascript">function importXLS(fileName){objCon = new ActiveXObject("ADODB.Connection");objCon.Provider = "Microsoft.Jet.OLEDB.4.0";objCon.ConnectionString = "Data Source=" + fileName + ";Extended Properties=Excel 8.0;";objCon.CursorLocation = 1;objCon.Open;var strQuery;//Get the SheetNamevar strSheetName = "Sheet1$";var rsTemp = new ActiveXObject("ADODB.Recordset");rsTemp = objCon.OpenSchema(20);if(!rsTemp.EOF)strSheetName = rsTemp.Fields("Table_Name").Value;rsTemp = null;rsExcel = new ActiveXObject("ADODB.Recordset");strQuery = "SELECT * FROM [" + strSheetName + "]";rsExcel.ActiveConnection = objCon;rsExcel.Open(strQuery);while(!rsExcel.EOF){for(i = 0;i<rsExcel.Fields.Count;++i){alert(rsExcel.Fields(i).value);}rsExcel.MoveNext;}// Close the connection and dispose the fileobjCon.Close;objCon =null;rsExcel = null;}</script></head><body><input type="file" id="f" /><input type="button" id="b" value="import" onclick="if(f.value=='')alert('请选择xls⽂件');else importXLS(f.value)" /> </body></html>复制代码代码如下:function AutomateExcel(){// Start Excel and get Application object.var oXL = new ActiveXObject("Excel.Application");oXL.Visible = true;// Get a new workbook.var oWB = oXL.Workbooks.Add();var oSheet = oWB.ActiveSheet;// Add table headers going cell by cell.oSheet.Cells(1, 1).Value = "First Name";oSheet.Cells(1, 2).Value = "Last Name";oSheet.Cells(1, 3).Value = "Full Name";oSheet.Cells(1, 4).Value = "Salary";// Format A1:D1 as bold, vertical alignment = center.oSheet.Range("A1", "D1").Font.Bold = true;oSheet.Range("A1", "D1").VerticalAlignment = -4108; //xlVAlignCenter// Create an array to set multiple values at once.// Fill A2:B6 with an array of values (from VBScript).oSheet.Range("A2", "B6").Value = CreateNamesArray();// Fill C2:C6 with a relative formula (=A2 & " " & B2).var oRng = oSheet.Range("C2", "C6");oRng.Formula = "=A2 & " " & B2";// Fill D2:D6 with a formula(=RAND()*100000) and apply format.oRng = oSheet.Range("D2", "D6");oRng.Formula = "=RAND()*100000";oRng.NumberFormat = "$0.00";// AutoFit columns A:D.oRng = oSheet.Range("A1", "D1");oRng.EntireColumn.AutoFit();// Manipulate a variable number of columns for Quarterly Sales Data. DispalyQuarterlySales(oSheet);// Make sure Excel is visible and give the user control// of Excel's lifetime.oXL.Visible = true;erControl = true;}<HTML><HEAD><TITLE>将页⾯中指定表格的数据导⼊到Excel中</TITLE><SCRIPT LANGUAGE="javascript"><!--function AutomateExcel(){var oXL = new ActiveXObject("Excel.Application"); //创建应该对象var oWB = oXL.Workbooks.Add();//新建⼀个Excel⼯作簿var oSheet = oWB.ActiveSheet;//指定要写⼊内容的⼯作表为活动⼯作表var table = document.all.data;//指定要写⼊的数据源的idvar hang = table.rows.length;//取数据源⾏数var lie = table.rows(0).cells.length;//取数据源列数// Add table headers going cell by cell.for (i=0;i<hang;i++){//在Excel中写⾏for (j=0;j<lie;j++){//在Excel中写列//定义格式oSheet.Cells(i+1,j+1).NumberFormatLocal = "@";//上⾯这⼀句是将单元格的格式定义为⽂本oSheet.Cells(i+1,j+1).Font.Bold = true;//加粗oSheet.Cells(i+1,j+1).Font.Size = 10;//字体⼤⼩oSheet.Cells(i+1,j+1).value = table.rows(i).cells(j).innerText;//向单元格写⼊值}}oXL.Visible = true;erControl = true;}//--></SCRIPT></HEAD><BODY><table border="0" width="300" id="data" bgcolor="black" cellspacing="1"><tr bgcolor="white"><td>编号</td><td>姓名</td><td>年龄</td><td>性别</td></tr><tr bgcolor="white"><td>0001</td><td>张三</td><td>22</td><td>⼥</td></tr><tr bgcolor="white"><td>0002</td><td>李四</td><td>23</td><td>男</td></tr></table><input type="button" name="out_excel" onclick="AutomateExcel();" value="导出到excel"></BODY></HTML>复制代码代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><!-- 导出excle的三个⽅法要把ie浏览器的"对没有标记为安全的 ActiveX 控件进⾏初始化和脚本运⾏设置为提⽰或启⽤" --> <html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>WEB页⾯导出为EXCEL⽂档的⽅法</title></head><body><table id="tableExcel" width="100%" border="1" cellspacing="0" cellpadding="0"><tr><td colspan="5" align="center">WEB页⾯导出为EXCEL⽂档的⽅法</td></tr><tr><td>列标题1</td><td>列标题2</td><td>列标题3</td><td>列标题4</td><td>列标题5</td></tr><tr><td>aaa</td><td></td><td>ccc</td><td>ddd</td><td>eee</td></tr><tr><td>AAA</td><td></td><td>CCC</td><td>DDD</td><td>EEE</td></tr><tr><td>FFF</td><td>GGG</td><td>HHH</td><td>III</td><td>JJJ</td></tr></table><input type="button" onclick="javascript:method1('tableExcel');" value="第⼀种⽅法导⼊到EXCEL"><input type="button" onclick="javascript:method2('tableExcel');" value="第⼆种⽅法导⼊到EXCEL"><input type="button" onclick="javascript:getXlsFromTbl('tableExcel',null);" value="第三种⽅法导⼊到EXCEL"> <script language="javascript">function method1(tableid) {//整个表格拷贝到EXCEL中var curTbl = document.getElementById(tableid);var oXL = new ActiveXObject("Excel.Application"); //创建AX对象excelvar oWB = oXL.Workbooks.Add(); //获取workbook对象var oSheet = oWB.ActiveSheet; //激活当前sheetvar sel = document.body.createTextRange();sel.moveToElementText(curTbl); //把表格中的内容移到TextRange中sel.select(); //全选TextRange中内容sel.execCommand("Copy"); //复制TextRange中内容oSheet.Paste(); //粘贴到活动的EXCEL中oXL.Visible = true; //设置excel可见属性}function method2(tableid) //读取表格中每个单元到EXCEL中{var curTbl = document.getElementById(tableid);var oXL = new ActiveXObject("Excel.Application"); //创建AX对象excelvar oWB = oXL.Workbooks.Add(); //获取workbook对象var oSheet = oWB.ActiveSheet; //激活当前sheetvar Lenr = curTbl.rows.length; //取得表格⾏数for (i = 0; i < Lenr; i++) {var Lenc = curTbl.rows(i).cells.length; //取得每⾏的列数for (j = 0; j < Lenc; j++) {oSheet.Cells(i + 1, j + 1).value = curTbl.rows(i).cells(j).innerText; //赋值 }}oXL.Visible = true; //设置excel可见属性}function getXlsFromTbl(inTblId, inWindow) {try {var allStr = "";var curStr = "";if (inTblId != null && inTblId != "" && inTblId != "null") {curStr = getTblData(inTblId, inWindow);}if (curStr != null) {allStr += curStr;}else {alert("你要导出的表不存在!");return;}var fileName = getExcelFileName();doFileExport(fileName, allStr);}catch (e) {alert("导出发⽣异常:" + + "->" + e.description + "!");}}function getTblData(inTbl, inWindow) {var rows = 0;var tblDocument = document;if (!!inWindow && inWindow != "") {if (!document.all(inWindow)) {return null;}else {tblDocument = eval(inWindow).document;}}var curTbl = tblDocument.getElementById(inTbl);var outStr = "";if (curTbl != null) {for (var j = 0; j < curTbl.rows.length; j++) {for (var i = 0; i < curTbl.rows[j].cells.length; i++) {if (i == 0 && rows > 0) {outStr += " /t";rows -= 1;}outStr += curTbl.rows[j].cells[i].innerText + "/t";if (curTbl.rows[j].cells[i].colSpan > 1) {for (var k = 0; k < curTbl.rows[j].cells[i].colSpan - 1; k++) { outStr += " /t";}}if (i == 0) {if (rows == 0 && curTbl.rows[j].cells[i].rowSpan > 1) { rows = curTbl.rows[j].cells[i].rowSpan - 1;}}}outStr += "/r/n";}}else {outStr = null;alert(inTbl + "不存在!");}return outStr;}function getExcelFileName() {var d = new Date();var curYear = d.getYear();var curMonth = "" + (d.getMonth() + 1);var curDate = "" + d.getDate();var curHour = "" + d.getHours();var curMinute = "" + d.getMinutes();var curSecond = "" + d.getSeconds();if (curMonth.length == 1) {curMonth = "0" + curMonth;}if (curDate.length == 1) {curDate = "0" + curDate;}if (curHour.length == 1) {curHour = "0" + curHour;}if (curMinute.length == 1) {curMinute = "0" + curMinute;}if (curSecond.length == 1) {curSecond = "0" + curSecond;}var fileName = "leo_zhang" + "_" + curYear + curMonth + curDate + "_" + curHour + curMinute + curSecond + ".csv";return fileName;}function doFileExport(inName, inStr) {var xlsWin = null;if (!!document.all("glbHideFrm")) {xlsWin = glbHideFrm;}else {var width = 6;var height = 4;var openPara = "left=" + (window.screen.width / 2 - width / 2)+ ",top=" + (window.screen.height / 2 - height / 2)+ ",scrollbars=no,width=" + width + ",height=" + height;xlsWin = window.open("", "_blank", openPara);}xlsWin.document.write(inStr);xlsWin.document.close();xlsWin.document.execCommand('Saveas', true, inName);xlsWin.close();}</script></body></html>。

js实现数据导出为excel表格

js实现数据导出为excel表格

js实现数据导出为excel表格⽤js实现数据导出成excel表格在开发过程中遇到了⽼板需要把呈现在列表⾥⾯的数据导出成excel表格的问题,百度了⼀些⽅案,现在做个总结//我这⾥⽤静态数据做个例举,⼤家可以根据⾃⼰需求对应修改function exportToExcel(){let headerList = ['姓名','年龄','出⽣⽇期']; 表头部分let bodyList = [['新狗','18','1993'],['蜡笔','22','2000']];//主体内容部分let excelList = [];//声明⼀个空数组准备将头部和内容柔和在⼀起excelList.push(thList.join("\t,") + "\n")//这条语句的意思是将头部集合转换为已特殊符"\t,"分开的字符串,"/t,"在excel中相当于tab建的作⽤,作⽤就是切换到后⾯的单元格,这样headerList中的每⼀个元素都可以占在各⾃的单元格中,"\n"就是说当每⼀条字符串结束后换⾏,这样就可以让bodyList每⼀条⼦集合数据都独⽴拥有⼀⾏bodyList.forEach(item=>{excelList.push(item.join("\t," + "\n")) //原理跟上述⼀样})var merged = excelList .join("");//将上述得到的excel集合,转化为excel表格中的需要使⽤的字符串//## 导出操作// encodeURIComponent解决中⽂乱码const uri ="data:text/csv;charset=utf-8,\ufeff" + encodeURIComponent(merged);// 通过创建a标签实现let link = document.createElement("a");link.href = uri;link.download = `在线简历库${proxy.$tool.makeDate(new Date(), true)}.csv`; //这⾥是最后下载下来的excel表格名称link.click();}。

JS019.原生JS使用newBlob()实现带格式导出Word、Excel(提供无编程基。。。

JS019.原生JS使用newBlob()实现带格式导出Word、Excel(提供无编程基。。。

JS019.原⽣JS使⽤newBlob()实现带格式导出Word、Excel(提供⽆编程基。

导出效果代码实现<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title></head><body><table id="table" border="1"><tr style="height:50px;"><th style="width:100px;color:red;">姓名</th><th>性别</th><th>年龄</th></tr><tr><td>⼩明</td><td>男</td><td>16</td></tr><tr><td>⼩红</td><td>⼥</td><td>17</td></tr><tr><td>⼩张</td><td>男</td><td>17</td></tr></table><a id="down">点击下载excel</a><script>let html = `<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"></head><body>${document.getElementById('table').outerHTML}</body></html>`let blob = new Blob([html],{ type: 'application/vnd.ms-excel'});let a = document.getElementById('down');a.href = URL.createObjectURL(blob);a.download = '测试excel下载'</script></body></html>注意事项 · 只能写⾏内样式。

使用EasyUIdatagrid-export.js导出Excel,适用于多级表头

使用EasyUIdatagrid-export.js导出Excel,适用于多级表头

使⽤EasyUIdatagrid-export.js导出Excel,适⽤于多级表头原datagrid-export.js导出Excel只能导⼀级表头的Excel,因项⽬需要,对其进⾏了修改优化。

在js⽂件中,主要修改了toHtml⽅法。

导出Excel步骤:先将datagrid的数据⽣成html的table,根据table样式导出到Excel⽂件。

1function toHtml(target, rows, footer, caption){2 rows = rows || getRows(target);3 rows = rows.concat(footer||getFooterRows(target));4var dg = $(target);5var data = ['<table border="1" rull="all" style="border-collapse:collapse">'];6var fields = dg.datagrid('getColumnFields',true).concat(dg.datagrid('getColumnFields',false));7//获取所有列信息8var cc = dg.datagrid('options').columns;9/*10 var columns = dg.datagrid('options').columns[0];11 var fields =[];12 var j = 0;13 //剔除hidden为true的字段14 for(var i=0;i<columns.length;i++){15 if(columns[i].hidden){}16 else{17 fields[j]=columns[i].field;18 j++;19 }20 }21*/2223var trStyle = 'height:32px';24var tdStyle0 = 'vertical-align:middle;padding:0 4px';25if (caption){26 data.push('<caption>'+caption+'</caption>');27 }28//写⼊表头信息,先判断是否为多级表头29for(var j=0; j<cc.length; j++){30 data.push('<tr style="'+trStyle+'">');31var cols = cc[j];32for(var i=0; i<cols.length; i++){33//判断是否未隐藏字段34if(cols[i].hidden == true){35continue;36 }37var tdStyle = tdStyle0 + ';width:'+cols[i].boxWidth+'px;';38 tdStyle += ';text-align:'+(cols[i].halign||cols[i].align||'');39//定义⾏列信息,初始化⾏和列的值为140var colspans = 1;41var rowspans = 1;42if(cols[i].rowspan===undefined){43 }else{44 rowspans = cols[i].rowspan;45 }46if(cols[i].colspan ===undefined){47 }else{48 colspans = cols[i].colspan;49 }50 data.push('<td style="'+tdStyle+'" colspan="'+colspans+'" rowspan="'+rowspans+'">'+cols[i].title+'</td>');51 }52 data.push('</tr>');53 }5455//原⽅法56/*57 data.push('<tr style="'+trStyle+'">');58 for(var i=0; i<fields.length; i++){59 var col = dg.datagrid('getColumnOption', fields[i]);60 var tdStyle = tdStyle0 + ';width:'+col.boxWidth+'px;';61 tdStyle += ';text-align:'+(col.halign||col.align||'');62 data.push('<td style="'+tdStyle+'">'+col.title+'</td>');63 }64 data.push('</tr>');65*/6667 $.map(rows, function(row){68 data.push('<tr style="'+trStyle+'">');69for(var i=0; i<fields.length; i++){70var field = fields[i];71var col = dg.datagrid('getColumnOption', field); 72if(col.hidden == true){73continue;74 }75var value = row[field];76if (value == undefined){77 value = '';78 }79var tdStyle = tdStyle0;80 tdStyle += ';text-align:'+(col.align||'');81 data.push(82 '<td style="'+tdStyle+'">'+value+'</td>'83 );84 }85 data.push('</tr>');86 });87 data.push('</table>');88return data.join('');89 }。

js文件操作之——导出Excel(js-xlsx)

js文件操作之——导出Excel(js-xlsx)

js⽂件操作之——导出Excel(js-xlsx)前阵⼦跟server同学讨论⼀个Excel导出的需求,我说JS搞不定,需要server来做,被server同学强⾏打脸。

今天研究了下,尼玛,不光可以,还很强⼤了!总结:经验是害⼈的,尤其是在发展迅速的前端圈⼉,and,需要保持饥渴,保持对新技术的敏感度。

注:以下只探讨现代浏览器1. 最简单的Excel导出原理:js可以通过base64或者blob,把⼀个包含⼀个<table>的<html>串,导出成xx.xls格式。

⽽Excel可以打开html⽂件。

这样看起来,就是⼀个成功的Excel导出。

var tableHtml='<html><head><meta charset="UTF-8"></head><body><table><tr><td>only one</td></tr></table></body></html>';//base64 URL形式⽂件下载var oa = document.createElement('a');oa.href = 'data:application/vnd.ms-excel;base64,'+window.btoa(tableHtml);oa.download = 'htmltable-base64.xls';//通过A标签设置⽂件名oa.click();⽂件,在js中,除了可以是base64,也可以是⼀个blob。

- base64形式的⽂件描述,在js或者html中,就是⼀个很长的base4字符串- blob形式的⽂件描述,在js或者html中,是⼀个URL形式的字符串,他指向的是浏览器内存中的⼀个⽂件⽚段,形如"blob:/f999f57f-b79f-4293-a317-3bbf6ea58788"blob形式的Excel导出,如下://blob URL形式⽂件下载var tableHtml='<html><head><meta charset="UTF-8"></head><body><table><tr><td>only one</td></tr></table></body></html>';var excelBlob = new Blob([tableHtml], {type: 'application/vnd.ms-excel'});var oa = document.createElement('a');oa.href = URL.createObjectURL(excelBlob);oa.download = 'htmltable-blob.xls';document.body.appendChild(oa);oa.click();⽑病:- 这是个假的excel⽂件,只有xls格式可以在Excel中打开,xlsx不⾏。

使用纯前端JavaScript实现Excel导入导出方法过程详解

使用纯前端JavaScript实现Excel导入导出方法过程详解

使⽤纯前端JavaScript实现Excel导⼊导出⽅法过程详解公司最近要为某国企做⼀个**统计和管理系统,具体要求包含Excel导⼊导出根据导⼊的数据进⾏展⽰报表图表展⽰(包括柱状图,折线图,饼图),⽽且还要求要有动画效果,扁平化风格Excel 导出,并要提供客户端来管理Excel ⽂件...要求真多!现在总算是完成了,于是将我的经验分析出来。

在整个项⽬架构中,⾸先就要解决Excel导⼊的问题。

由于公司没有⾃⼰的框架做Excel IO,就只有通过其他渠道了。

嗯,我在github上找到了⼀个开源库,通过npm⽅式来安装。

npm install xlsx --save之后,在⾃⼰的html⽂件⾥⾯添加对js⽂件的引⽤<script src="./node_modules/xlsx/dist/jszip.js"></script><script src="./node_modules/xlsx/dist/xlsx.js"></script>通过FileReader对象将数据以⼆进制字符串的⽅式加载到内存中,target.addEventListener('drop', function (e) {e.preventDefault();handleDrop(e.dataTransfer.files[0]);});handleDrop = function(){var reader = new FileReader();reader.onload = function (e) {var data = e.target.result;......};reader.readAsBinaryString(f);}然后我们下来的操作就是要利⽤库对data数据进⾏操作了。

它暴露了⼀个对象XLSX,通过XLSX的read()⽅法就可以将数据读为JSON对象了。

JSP页面中导出Excel文件及其中文乱码的解决办法

JSP页面中导出Excel文件及其中文乱码的解决办法

JSP页面‎中导出Ex‎c el文件‎及其中文乱‎码的解决办‎法Web‎应用导出E‎x cel报‎表的简单实‎现(HTM‎L)‎在Web应‎用中,很多‎数据经常要‎导出成Ex‎c el文档‎。

用专门的‎生成真正的‎E xcel‎文档的方式‎比较复杂,‎不太好用。

‎所以经常用‎一种简单的‎方式来实现‎,即将报表‎保存为HT‎M L格式,‎然后用Ex‎c el打开‎。

实现方‎式:第一‎步,用JS‎P实现HT‎M L版本的‎报表第二‎步,在该J‎S P页面头‎部设置re‎s pons‎e的Con‎t entT‎y pe为E‎x cel格‎式<%‎resp‎o nse.‎s etCo‎n tent‎T ype(‎"appl‎i cati‎o n/vn‎d.ms-‎e xcel‎;char‎s et=G‎B K");‎%>‎中文问题‎:查看源‎代码时发现‎J SP文件‎中写死的中‎文为乱码,‎则在JSP‎文件头部添‎加一行<‎%@ pa‎g e co‎n tent‎T ype=‎"text‎/html‎; cha‎r set=‎g b231‎2" %>‎查看源代‎码时发现文‎字为中文,‎但是用Ex‎c el打开‎为乱码则在‎<html‎>与<he‎a d>中加‎入<me‎t a ht‎t p-eq‎u iv="‎C onte‎n t-Ty‎p e" c‎o nten‎t="te‎x t/ht‎m l; c‎h arse‎t=GBK‎">用‎S ervl‎e t实现也‎是类似的处‎理方法。

‎实现样例‎:Test‎.jsp‎<%@ ‎p age ‎c onte‎n tTyp‎e="te‎x t/ht‎m l; c‎h arse‎t=GBK‎" %>‎<% re‎s pons‎e.set‎C onte‎n tTyp‎e("ap‎p lica‎t ion/‎v nd.m‎s-exc‎e l;ch‎a rset‎=GBK"‎); %>‎<HTM‎L><m‎e ta h‎t tp-e‎q uiv=‎"Cont‎e nt-T‎y pe" ‎c onte‎n t="t‎e xt/h‎t ml; ‎c hars‎e t=GB‎K"><‎h ead>‎<titl‎e>Tes‎t</ti‎t le><‎/head‎><bo‎d y><‎T ABLE‎bord‎e rCol‎o r=#1‎11111‎cell‎S paci‎n g=0 ‎c ellP‎a ddin‎g=2 w‎i dth=‎1200 ‎a lign‎=cent‎e r bo‎r der=‎1><T‎R><T‎D ali‎g n=mi‎d dle ‎w idth‎="10%‎" hei‎g ht=2‎0 row‎S pan=‎2>项目‎</TD>‎<TD ‎a lign‎=midd‎l e wi‎d th="‎2%" h‎e ight‎=20 r‎o wSpa‎n=2>计‎量单位 <‎/TD>‎<TD a‎l ign=‎m iddl‎e wid‎t h="4‎%" he‎i ght=‎20>满期‎赔付率 <‎/TD>‎</TR>‎</TA‎B LE>‎</bod‎y></‎H TML>‎Web应‎用导出Ex‎c el报表‎的简单实现‎(HTML‎)在We‎b应用中,‎很多数据经‎常要导出成‎E xcel‎文档。

JS导出Table为excel的三种可行方法

JS导出Table为excel的三种可行方法

JS导出Table为excel的三种可行方法[html] view plain copy1.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"2."/TR/xhtml1/DTD/xhtml1-transitional.dtd">3.<html xmlns="/1999/xhtml">4.<head>5.<meta http-equiv="Content-Type"content="text/html; charset=gb2312"/>6.<title>WEB页面导出为EXCEL文档的方法</title>7.</head>8.<body>9.<table id="tableExcel"width="100%"border="1"cellspa cing="0"cellpadding="0">10.<tr>11.<td colspan="5"align="center">WEB页面导出为EXCEL文档的方法</td>12.</tr>13.<tr>14.<td>列标题1</td>15.<td>列标题2</td>16.<td>列标题3</td>17.<td>列标题4</td>18.<td>列标题5</td>19.</tr>20.<tr>21.<td>aaa</td>22.<td>bbb</td>23.<td>ccc</td>24.<td>ddd</td>25.<td>eee</td>26.</tr>27.<tr>28.<td>AAA</td>29.<td>BBB</td>30.<td>CCC</td>31.<td>DDD</td>32.<td>EEE</td>33.</tr>34.<tr>35.<td>FFF</td>36.<td>GGG</td>37.<td>HHH</td>38.<td>III</td>39.<td>JJJ</td>40.</tr>41.</table>42.<input type="button"onclick="javascript:method1('ta bleExcel');"value="第一种方法导入到EXCEL">43.<input type="button"onclick="javascript:method2('ta bleExcel');"value="第二种方法导入到EXCEL">44.<input type="button"onclick="javascript:getXlsFrom Tbl('tableExcel',null);"value="第三种方法导入到EXCEL">45.<SCRIPT LANGUAGE="javascript">46.function method1(tableid) {//整个表格拷贝到EXCEL 中47.var curTbl = document.getElementById(tableid);48.var oXL = new ActiveXObject("Excel.Application");49.//创建AX对象excel50.var oWB = oXL.Workbooks.Add();51.//获取workbook对象52.var oSheet = oWB.ActiveSheet;53.//激活当前sheet54.var sel = document.body.createTextRange();55.sel.moveToElementText(curTbl);56.//把表格中的内容移到TextRange中57.sel.select();58.//全选TextRange中内容59.sel.execCommand("Copy");60.//复制TextRange中内容61.oSheet.Paste();62.//粘贴到活动的EXCEL中63.oXL.Visible = true;64.//设置excel可见属性65.}66.function method2(tableid) //读取表格中每个单元到EXCEL中67.{68.var curTbl = document.getElementById(tableid);69.var oXL = new ActiveXObject("Excel.Application");70.//创建AX对象excel71.var oWB = oXL.Workbooks.Add();72.//获取workbook对象73.var oSheet = oWB.ActiveSheet;74.//激活当前sheet75.var Lenr = curTbl.rows.length;76.//取得表格行数77.for (i = 0; i <Lenr; i++)78.{79.var Lenc = curTbl.rows(i).cells.length;80.//取得每行的列数81.for (j = 0; j <Lenc; j++)82.{83.oSheet.Cells(i + 1, j + 1).value = curTbl.rows(i).cells(j).i nnerText;84.//赋值85.}86.}87.oXL.Visible = true;88.//设置excel可见属性89.}90.function getXlsFromTbl(inTblId, inWindow) {91.try {92.var allStr = "";93.var curStr = "";94.//alert("getXlsFromTbl");95.if (inTblId != null && inTblId != "" && inTblId != "null" ) {96.curStr = getTblData(inTblId, inWindow);97.}98.if (curStr != null) {99.allStr += curStr;100.}101.else {102.alert("你要导出的表不存在!");103.return;104.}105.var fileName = getExcelFileName();106.doFileExport(fileName, allStr);107.}108.catch(e) {109.alert("导出发生异常:" + + "->" + e.description + "!");110.}111.}112.function getTblData(inTbl, inWindow) {113.var rows = 0;114.//alert("getTblData is " + inWindow);115.var tblDocument = document;116.if (!!inWindow && inWindow != "") {117.if (!document.all(inWindow)) {118.return null;119.}120.else {121.tblDocument = eval(inWindow).document;122.}123.}124.var curTbl = tblDocument.getElementById(inTbl);125.var outStr = "";126.if (curTbl != null) {127.for (var j = 0; j <curTbl.rows.length; j++) {128.//alert("j is " + j);129.for (var i = 0; i <curTbl.rows[j].cells.length; i++) {130.//alert("i is " + i);131.if (i == 0 && rows > 0) {132.outStr += " \t";133.rows -= 1;134.}135.outStr += curTbl.rows[j].cells[i].innerText + "\t";136.if (curTbl.rows[j].cells[i].colSpan > 1) {137.for (var k = 0; k <curTbl.rows[j].cells[i].colSpan - 1; k ++) {138.outStr += " \t";139.}140.}141.if (i == 0) {142.if (rows == 0 && curTbl.rows[j].cells[i].rowSpan > 1) {143.rows = curTbl.rows[j].cells[i].rowSpan - 1;144.}145.}146.}147.outStr += "\r\n";148.}149.}150.else {151.outStr = null;152.alert(inTbl + "不存在!");153.}154.return outStr;155.}156.function getExcelFileName() {157.var d = new Date();158.var curYear = d.getYear();159.var curMonth = "" + (d.getMonth() + 1);160.var curDate = "" + d.getDate();161.var curHour = "" + d.getHours();162.var curMinute = "" + d.getMinutes();163.var curSecond = "" + d.getSeconds();164.if (curMonth.length == 1) {165.curMonth = "0" + curMonth;166.}167.if (curDate.length == 1) {168.curDate = "0" + curDate;169.}170.if (curHour.length == 1) {171.curHour = "0" + curHour;172.}173.if (curMinute.length == 1) {174.curMinute = "0" + curMinute;175.}176.if (curSecond.length == 1) {177.curSecond = "0" + curSecond;178.}179.var fileName = "leo_zhang" + "_" + curYear + curMont h + curDate + "_"180.+ curHour + curMinute + curSecond + ".csv";181.//alert(fileName);182.return fileName;183.}184.function doFileExport(inName, inStr) {185.var xlsWin = null;186.if (!!document.all("glbHideFrm")) {187.xlsWin = glbHideFrm;188.}189.else {190.var width = 6;191.var height = 4;192.var openPara = "left=" + (window.screen.width / 2 - width / 2)193.+ ",top=" + (window.screen.height / 2 - height / 2) 194.+ ",scrollbars=no,width=" + width + ",height=" + heig ht;195.xlsWin = window.open("", "_blank", openPara);196.}197.xlsWin.document.write(inStr);198.xlsWin.document.close();199.xlsWin.document.execCommand('Saveas', true, inNam e);200.xlsWin.close();201.}202.</SCRIPT>203.</body>204.</html>。

nodejs导出excel的方法

nodejs导出excel的方法

nodejs导出excel的⽅法本⽂实例讲述了nodejs导出excel的⽅法。

分享给⼤家供⼤家参考。

具体如下:nodejs 对查询数据⽣成excel并下载,采⽤⽅式先⽣成本excel⽂件,然后再下载;通过⽐较采⽤excel-export插件代码如下:excel.js代码:var extend = require("extend");var fs = require("fs");var excelExport = require('excel-export');var guid=require('guid');var path=require('path');var excel=function(){this.req=null;this.resp=null;};/*** ⽣成excel⽂件* @param params*/excel.prototype.createExcel=function(params){var setting={savePath:"uploadFile/excel/"};setting=extend({},setting,params);var uuid=guid.create();var data=params.data||"";var result = excelExport.execute(data);var name='excel'+uuid+'.xlsx';var filePath= path.resolve(setting.savePath, name);fs.writeFile(filePath, result, 'binary',function(err){setting.cb(filePath);});}/*** 计算上次的断点信息* @param range* @returns {number}* @private*/excel.prototype._calStartPosition = function(range) {var startPos = 0;if( typeof range != 'undefined') {var startPosMatch = /^bytes=([0-9]+)-$/.exec(range);startPos = Number(startPosMatch[1]);}return startPos;}excel.prototype._configHeader = function(config) {var startPos = config.startPos,fileSize = config.fileSize,resp = this.resp;// 如果startPos为0,表⽰⽂件从0开始下载的,否则则表⽰是断点下载的。

js实现数据导出为EXCEL(支持大量数据导出)

js实现数据导出为EXCEL(支持大量数据导出)

js实现数据导出为EXCEL(⽀持⼤量数据导出)数据导出为excel是前端⽐较常⽤的功能。

笔者近期在⽹上收集汇总了⼏种常⽤的⽅法,供⼤家使⽤。

1、ActiveXObject(“Excel.Application”)这种⽅法只能在IE下使⽤。

优点:参照VBA控制excel对象。

(代码不会的可以录制宏)缺点:引⽤cell对象太慢,上万⾏数据导出时间超过2分钟2、以Table⽅式导出为html⽂件。

3、以CSV⽅式导出。

使⽤中发现如果数据较多,上述第2、3中⽅法会失效,因此⼜整理了第4种⽅法 toLargerCSV。

第4种⽅法在IE10、chrome测试通过<html><head><div>以Table格式导为xls⽂件<button onclick='TableToExcel()'>导出</button></div><div>导出CSV⽂件<button onclick='toCSV()'>导出</button></div><div>⼤量数据导出CSV<button onclick='toLargerCSV()'>导出</button></div></head><body><script>//以Table格式导为xls⽂件function TableToExcel(){//要导出的json数据var jsonData = [{name:'001',id:'621699************'},{name:'002',id:'520699************'},{name:'003',id:'423699************'},{name:'004',id:'341655************'}]//导出前要将json转成table格式//列标题var str = '<tr><td>name</td><td>id</td></tr>';//具体数值遍历for(let i = 0;i < jsonData.length;i++){str += '<tr>';for(let item in jsonData[i]){var cellvalue = jsonData[i][item];//不让表格显⽰科学计数法或者其他格式//⽅法1 tr⾥⾯加 style="mso-number-format:'\@';" ⽅法2 是改为 = 'XXXX'格式//如果纯数字且超过15位/*var reg = /^[0-9]+.?[0-9]*$/;if ((cellvalue.length>15) && (reg.test(cellvalue))){//cellvalue = '="' + cellvalue + '"';}*///此处⽤`取代',具体⽤法搜索模板字符串 ES6特性str+=`<td style="mso-number-format:'\@';">${cellvalue}</td>`;// str+=`<td>${cellvalue}</td>`;}str+='</tr>';}var worksheet = '导出结果'var uri = 'data:application/vnd.ms-excel;base64,';//下载的表格模板数据var template = `<html xmlns:o="urn:schemas-microsoft-com:office:office"xmlns:x="urn:schemas-microsoft-com:office:excel"xmlns="/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet> <x:Name>${worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>${str}</table></body></html>`;//下载模板function base64 (s) { return window.btoa(unescape(encodeURIComponent(s)))}window.location.href = uri + base64(template);}function toCSV(){//要导出的json数据var jsonData = [{name:'001',id:'621699************'},{name:'002',id:'520699************'},{name:'003',id:'423699************'},{name:'004',id:'341655************'}]//导出前要将json转成table格式//列标题var str = 'name,id\n';//具体数值遍历for(let i = 0 ; i < jsonData.length ; i++ ){for(let item in jsonData[i]){//增加\t为了不让表格显⽰科学计数法或者其他格式//此处⽤`取代',具体⽤法搜索模板字符串 ES6特性str+=`${jsonData[i][item] + '\t,'}`;}str+='\n';}let uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(str);var link = document.createElement("a");link.href = uri;link.download = "导出.csv";document.body.appendChild(link);link.click();document.body.removeChild(link);}//⽀持⼤批量数据导出,⽬前测试15万⾏ 30列通过,导出时间约为6秒function toLargerCSV(){//CSV格式可以⾃⼰设定,适⽤MySQL导⼊或者excel打开。

SpreadJS前端表格控件如何导入导出 Excel 文件

SpreadJS前端表格控件如何导入导出 Excel 文件

SpreadJS前端表格控件如何导入导出Excel 文件在SpreadJS 中可以使用Excel ExcelIO 服务来和Excel文件交互。

ExcelIO服务需要部署到服务端,通过ExcelIO 服务你可以导入Spread 文件后你可以和表单中的数据交互,并且保存分发给最终用户。

SpreadJS 可以导出到多种格式的文件,包括Excel2007(XLSX)\Excel 97 (XLS)、CSV 和TXT格式,为了方便使用导入导出服务,你仅需要通过简单的点击安装操作,ExcelIO 就会部署到本地IIS中。

本篇文章即将介绍如何安装、配置和使用ExcelIO 服务。

首先,SpreadJS包中包含ExcelIO.msi 安装文件;你将使用这个文件安装ExcelIO 服务到服务器中。

注意:在安装前机器需要安装 4 和IIS 7 。

点击“Next”按钮,安装文件会在IIS默认站点下自动创建服务。

安装之后,会弹出License 注册框,如果是试用用户可以直接点击“Next”。

一旦上述两步操作完成,我们就可以使用ExcelIO 服务了。

默认安装路径为 http://localhost/excelio/,如果需要你可以在截图中位置找到ExcelIO 进行配置。

然后,你可以开始使用SpreadJS 结合ExcelIO 服务导入导出Excel 文件了。

通常,你可以创建HTML页面添加按钮,通过点击事件调用相应方法。

然后,通过Ajax 异步上传为服务器。

通过解析Json 串来显示和传递数据。

在你进行了界面或数据交互操作后,你需要把操作组织成JSON 串发会服务端,ExcelIO 服务将生成Excel文件并且下载到客户端。

JS实现导出Excel的五种方法详解【附源码下载】

JS实现导出Excel的五种方法详解【附源码下载】

JS实现导出Excel的五种⽅法详解【附源码下载】本⽂实例讲述了JS实现导出Excel的五种⽅法。

分享给⼤家供⼤家参考,具体如下:这五种⽅法前四种⽅法只⽀持IE浏览器,最后⼀个⽅法⽀持当前主流的浏览器(⽕狐,IE,Chrome,Opera,Safari)<!DOCTYPE html><html><head lang="en"><meta charset="UTF-8"><title>html 表格导出道</title><script language="JavaScript" type="text/javascript">//第⼀种⽅法function method1(tableid) {var curTbl = document.getElementById(tableid);var oXL = new ActiveXObject("Excel.Application");var oWB = oXL.Workbooks.Add();var oSheet = oWB.ActiveSheet;var sel = document.body.createTextRange();sel.moveToElementText(curTbl);sel.select();sel.execCommand("Copy");oSheet.Paste();oXL.Visible = true;}//第⼆种⽅法function method2(tableid){var curTbl = document.getElementById(tableid);var oXL = new ActiveXObject("Excel.Application");var oWB = oXL.Workbooks.Add();var oSheet = oWB.ActiveSheet;var Lenr = curTbl.rows.length;for (i = 0; i < Lenr; i++){ var Lenc = curTbl.rows(i).cells.length;for (j = 0; j < Lenc; j++){oSheet.Cells(i + 1, j + 1).value = curTbl.rows(i).cells(j).innerText;}}oXL.Visible = true;}//第三种⽅法function getXlsFromTbl(inTblId, inWindow){try {var allStr = "";var curStr = "";if (inTblId != null && inTblId != "" && inTblId != "null") {curStr = getTblData(inTblId, inWindow);}if (curStr != null) {allStr += curStr;}else {alert("你要导出的表不存在");return;}var fileName = getExcelFileName();doFileExport(fileName, allStr);}catch(e) {alert("导出发⽣异常:" + + "->" + e.description + "!");}}function getTblData(inTbl, inWindow) {var rows = 0;var tblDocument = document;if (!!inWindow && inWindow != "") {if (!document.all(inWindow)) {return null;}else {tblDocument = eval(inWindow).document;}}var curTbl = tblDocument.getElementById(inTbl);var outStr = "";if (curTbl != null) {for (var j = 0; j < curTbl.rows.length; j++) {for (var i = 0; i < curTbl.rows[j].cells.length; i++) {if (i == 0 && rows > 0) {outStr += " t";rows -= 1;}outStr += curTbl.rows[j].cells[i].innerText + "t";if (curTbl.rows[j].cells[i].colSpan > 1) {for (var k = 0; k < curTbl.rows[j].cells[i].colSpan - 1; k++) {outStr += " t";}}if (i == 0) {if (rows == 0 && curTbl.rows[j].cells[i].rowSpan > 1) {rows = curTbl.rows[j].cells[i].rowSpan - 1;}}}outStr += "rn";}}else {outStr = null;alert(inTbl + "不存在 !");}return outStr;}function getExcelFileName() {var d = new Date();var curYear = d.getYear();var curMonth = "" + (d.getMonth() + 1);var curDate = "" + d.getDate();var curHour = "" + d.getHours();var curMinute = "" + d.getMinutes();var curSecond = "" + d.getSeconds();if (curMonth.length == 1) {curMonth = "0" + curMonth;}if (curDate.length == 1) {curDate = "0" + curDate;}if (curHour.length == 1) {curHour = "0" + curHour;}if (curMinute.length == 1) {curMinute = "0" + curMinute;}if (curSecond.length == 1) {curSecond = "0" + curSecond;}var fileName = "table" + "_" + curYear + curMonth + curDate + "_"+ curHour + curMinute + curSecond + ".csv";return fileName;}function doFileExport(inName, inStr) {var xlsWin = null;if (!!document.all("glbHideFrm")) {xlsWin = glbHideFrm;}else {var width = 6;var height = 4;var openPara = "left=" + (window.screen.width / 2 - width / 2)+ ",top=" + (window.screen.height / 2 - height / 2)+ ",scrollbars=no,width=" + width + ",height=" + height;xlsWin = window.open("", "_blank", openPara);}xlsWin.document.write(inStr);xlsWin.document.close();xlsWin.document.execCommand('Saveas', true, inName);xlsWin.close();}//第四种function method4(tableid){var curTbl = document.getElementById(tableid);var oXL;try{oXL = new ActiveXObject("Excel.Application"); //创建AX对象excel}catch(e){alert("⽆法启动Excel!\n\n如果您确信您的电脑中已经安装了Excel,"+"那么请调整IE的安全级别。

使用js-xlsx导出表格

使用js-xlsx导出表格

使⽤js-xlsx导出表格⾸先导⼊ xlsx.full.min.js建⽴表格数据下⾯是关键代码<a download="表格导出excel" id="excelOut" href="#" class="btn_a">导出</a>//base64转码var base64 = function (s) {return window.btoa(unescape(encodeURIComponent(s)));};//替换table数据和worksheet名字var format = function (s, c) {return s.replace(/{(\w+)}/g,function (m, p) {return c[p];});}function tableToExcel(tableid, sheetName) {var uri = 'data:application/vnd.ms-excel;base64,';var template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"' + 'xmlns="/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>'+ '<x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet> </x:ExcelWorksheets>'+ '</x:ExcelWorkbook></xml><![endif]-->' +' <style type="text/css">' +'table td {' +'border: 1px solid #000000;' +'width: 100px;' +'height: 30px;' +' text-align: center;' +' }' +'</style>' +'</head><body ><table class="excelTable">{table}</table></body></html>';if (!tableid.nodeType) tableid = document.getElementById("materials_table");var ctx = {worksheet: sheetName || 'Worksheet', table: tableid.innerHTML};document.getElementById("excelOut").href = uri + base64(format(template, ctx));}。

前端vue使用js-xlsx导出excel的三种方法

前端vue使用js-xlsx导出excel的三种方法

前端vue使⽤js-xlsx导出excel的三种⽅法npm install --save xlsx file-saver在组件⾥⾯引⼊import FileSaver from'file-saver'import XLSX from'xlsx'第⼀种其中#outTable是在el-table上定义的idexportExcel() {var xlsxParam = { raw: true };//转换成excel时,使⽤原始的格式var wb = XLSX.utils.table_to_book(document.querySelector("#outTable"),xlsxParam);//outTable为列表idvar wbout = XLSX.write(wb, {bookType: "xlsx",bookSST: true,type: "array"});try {FileSaver.saveAs(new Blob([wbout], { type: "application/octet-stream;charset=utf-8" }),"sheetjs.xlsx");} catch (e) {if (typeof console !== "undefined") console.log(e, wbout);}return wbout;}第⼆种通过数组导出excelvar _data = [[ "id", "name", "value" ],[ 1, "sheetjs", 7262 ],[ 2, "js-xlsx", 6969 ]];const ws= XLSX.utils.aoa_to_sheet(_data);/* generate workbook and add the worksheet */const wb = XLSX.utils.book_new();XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');/* save to file */XLSX.writeFile(wb, 'SheetJS.xlsx');第三种通过json导出excelexportExcel() {var wopts = {bookType: 'xlsx',bookSST: true,type: 'binary'};var workBook = {SheetNames: ['Sheet1'],Sheets: {},Props: {}};var table = [];for(var i=0;i<this.multipleSelection.length;i++){var params = {姓名: this.multipleSelection[i].name,部门: this.multipleSelection[i].department,职务名称: this.multipleSelection[i].titles,档案编号:this.multipleSelection[i].fileNum,校验状态:this.multipleSelection[i].verifyStatus,审核状态:this.multipleSelection[i].checkedStatus,备注:this.multipleSelection[i].checkedReason,}table[i] = params};//1、XLSX.utils.json_to_sheet(data) 接收⼀个对象数组并返回⼀个基于对象关键字⾃动⽣成的“标题”的⼯作表,默认的列顺序由使⽤Object.keys的字段的第⼀次出现确定 //2、将数据放⼊对象workBook的Sheets中等待输出workBook.Sheets['Sheet1'] = XLSX.utils.json_to_sheet(table);//3、XLSX.write() 开始编写Excel表格//4、changeData() 将数据处理成需要输出的格式FileSaver.saveAs(new Blob([this.changeData(XLSX.write(workBook, wopts))], {type: 'application/octet-stream'}), "sheetjs.xlsx")},changeData(s) {//如果存在ArrayBuffer对象(es6) 最好采⽤该对象if (typeof ArrayBuffer !== 'undefined') {//1、创建⼀个字节长度为s.length的内存区域var buf = new ArrayBuffer(s.length);//2、创建⼀个指向buf的Unit8视图,开始于字节0,直到缓冲区的末尾var view = new Uint8Array(buf);//3、返回指定位置的字符的Unicode编码for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;return buf;} else {var buf = new Array(s.length);for (var i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF;return buf;}},第三种适合导出选中的数据如果选中的json数据字段都是你需要的可以⽤下⾯的⽅法导出const workSheet =XLSX.utils.json_to_sheet(this.multipleSelection, {header: ['列1', '列2', '列3', '列1', '列2', '列3', '列1', '列2'],skipHeader: true// 跳过上⾯的标题⾏});const ws = XLSX.utils.aoa_to_sheet(workSheet);const wb = XLSX.utils.book_new();XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');/* save to file */XLSX.writeFile(wb, 'SheetJS.xlsx');。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<script language="JavaScript" type="text/javascript">
/* * 默认转换实现函数,如果需要其他功能,需自行扩展
* 参数:
* tableID : HTML中Table对象id属性值
* 详细用法参见以下 TableToExcel 对象定义
myWorkbook.Worksheets(2).Delete();
jXls.DisplayAlerts = true;
myWorksheet = myWorkbook.ActiveSheet;
var readRow = 0, readCol = 0;var totalRow = 0, totalCol = 0;
var tabNum = 0;
//设置行高、列宽
if(this.columnWidth != -1)
myWorksheet.Columns.ColumnWidth = this.columnWidth;
else
myWorksheet.Columns.ColumnWidth = 7;
myExcelCell2 = myWorksheet.Cells(readRow + myCellRowSpan - 1, readCol + myCellColSpan - 1);
myWorksheet.Range(myExcelCell, myExcelCell2).Merge();
if (obj[x].id == this.tableID) {
ቤተ መጻሕፍቲ ባይዱ tabNum = x;
totalRow = obj[x].rows.length;
for (i = 0; i < obj[x].rows[0].cells.length; i++) {
myHTMLTableCell = obj[x].rows(0).cells(i);
* 合并Excel中的单元格,客户端需要安装有Excel
* 详细的属性、方法引用说明参见:Excel的Microsoft Excel Visual Basic参考
* 示范:
* var tb = new TableToExcel('demoTable');
* tb.setFontStyle("Courier New");
myExcelCell.HorizontalAlignment = this.textAlign;
myExcelCell.Font.Size = this.fontSize;
= this.fontStyle;
return false;
}
jXls.Visible = true;
myWorkbook = jXls.Workbooks.Add();
jXls.DisplayAlerts = false;
myWorkbook.Worksheets(3).Delete();
this.tableBorder = -1; //边框类型,-1没有边框 可取1/2/3/4
this.backGround = 0; //背景颜色:白色 可取调色板中的颜色编号 1/2/3/4....
this.fontColor = 1; //字体颜色:黑色
this.fontSize = 10; //字体大小
TableToExcel.prototype.setColumnWidth = function (excelColumnWidth) {
this.columnWidth = excelColumnWidth;
};
TableToExcel.prototype.isLineWrap = function (lineWrap) {
* tb.isLineWrap(false);
* tb.isAutoFit(true);
* * tb.getExcelFile();
* 如果设置了单元格自适应,则设置单元格宽度无效
* 版本:1.0*/
function TableToExcel(tableID) {
}
//文件转换主函数
TableToExcel.prototype.getExcelFile = function () {
var jXls, myWorkbook, myWorksheet, myHTMLTableCell, myExcelCell, myExcelCell2;
*/
function saveAsExcel(tableID){
var tb = new TableToExcel(tableID);
tb.setFontStyle("Courier New");
tb.setFontSize(10);
tb.setTableBorder(2);
* tb.setFontSize(10); //推荐取值10
* tb.setFontColor(6); //一般情况不用设置
* tb.setBackGround(4); //一般情况不用设置
* tb.setTableBorder(2); //推荐取值2
* tb.setColumnWidth(10); //推荐取值10
//开始转换表格
for (z = 0; z < obj[tabNum].rows.length; z++) {
readRow = z + 1;
readCol = 0;
for (c = 0; c < obj[tabNum].rows(z).cells.length; c++) {
myCellColSpan = myHTMLTableCell.colSpan;
totalCol = totalCol + myCellColSpan;
}
}
}
//开始构件模拟表格
var excelTable = new Array();
var myCellColSpan, myCellRowSpan;
try {
jXls = new ActiveXObject('Excel.Application');
}catch (e) {
alert("无法启动Excel!\n\n如果您确信您的电脑中已经安装了Excel,"+"那么请调整IE的安全级别。\n\n具体操作:\n\n"+"工具 → Internet选项 → 安全 → 自定义级别 → 对没有标记为安全的ActiveX进行初始化和脚本运行 → 启用");
tb.setColumnWidth(7);
tb.isLineWrap(true);
tb.getExcelFile();
}
/** 功能:HTML中Table对象转换为Excel通用对象.
* 参数:tableID HTML中Table对象的ID属性值
* 说明:
* 能适应复杂的HTML中Table对象的自动转换,能够自动根据行列扩展信息
if (excelTable[readRow][y] == false) {
readCol = y;
break;
}
}
if (myCellColSpan * myCellRowSpan > 1) {
myExcelCell = myWorksheet.Cells(readRow, readCol);
this.fontStyle = "宋体"; //字体类型
this.rowHeight = 20; //行高
this.columnWidth = -1; //列宽
this.lineWrap = true; //是否自动换行
this.textAlign = -4108; //内容对齐方式 默认为居中
this.autoFit = true; //是否自适应宽度
this.tableID = tableID;
}
TableToExcel.prototype.setTableBorder = function (excelBorder) {
this.tableBorder = excelBorder ;
myHTMLTableCell = obj[tabNum].rows(z).cells(c);
myCellColSpan = myHTMLTableCell.colSpan;
myCellRowSpan = myHTMLTableCell.rowSpan;
for (y = 1; y <= totalCol; y++) {
this.fontColor = excelColor;
};
TableToExcel.prototype.setFontSize = function (excelFontSize) {
this.fontSize = excelFontSize;
};
TableToExcel.prototype.setFontStyle = function (excelFont) {
this.fontStyle = excelFont;
};
TableToExcel.prototype.setRowHeight = function (excelRowHeight) {
this.rowHeight = excelRowHeight;
相关文档
最新文档