本文目录一览:

js中的数据怎样导出到excel

简单的办法:使用js生成一个table,可以直接复制到excel中,网上有很多表格插件

复杂的办法:js传递数据到服务器,服务器生成表格后返回一个下载链接

js如何把table转成excel并下载

无非是这样的一个过程。先通过数据库查询出数据,放到List里,然后把这个List发往页面,然后遍历这个List把数据显示到这个表格里。 要想把数据导出到execel,很简单,把页面接受的这个List用jxl写到Execel就行了。具体将List导出到Execel的类如下:

package cms.dao;

import java.io.IOException;

import java.io.OutputStream;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.List;

import javax.servlet.http.HttpServletResponse;

import jxl.Workbook;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

import cms.utlis.DbUtils;

public class ToExecelByQuery {

//方法接受两个参数,一个是list,这个地方我用了泛型。另一个参数是HttpServletResponse response

public static void toExcelBy(ListAccessLog list,HttpServletResponse response) {

// 创建工作表

WritableWorkbook book=null;

response.reset();

// 创建工作流

OutputStream os =null;

try {

// 设置弹出对话框

response.setContentType("application/DOWLOAD");

// 设置工作表的标题

response.setHeader("Content-Disposition",

"attachment; filename=****.xls");//设置生成的文件名字

os = response.getOutputStream();

// 初始化工作表

book = Workbook.createWorkbook(os);

} catch (IOException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

try{

//以下是我做的导出日志的一个模版

int nCount = list.size();

WritableSheet sheet = book.createSheet("访问日志", 0);

// 生成名为"商品信息"的工作表,参数0表示这是第一页

int nI = 1;

// 表字段名

sheet.addCell(new jxl.write.Label(0, 0, "日志编号"));

sheet.addCell(new jxl.write.Label(1, 0, "用户ID"));

sheet.addCell(new jxl.write.Label(2, 0, "用户姓名"));

sheet.addCell(new jxl.write.Label(3, 0, "访问日期"));

sheet.addCell(new jxl.write.Label(4, 0, "访问时间"));

sheet.addCell(new jxl.write.Label(5, 0, "名片ID"));

sheet.addCell(new jxl.write.Label(6, 0, "名片名称"));

sheet.addCell(new jxl.write.Label(7, 0, "创建日期"));

sheet.addCell(new jxl.write.Label(8, 0, "更新日期"));

// 将数据追加

for(int i=1;ilist.size();i++){

sheet.addCell(new jxl.write.Label(0, i, list.get(i).toString()));

sheet.addCell(new jxl.write.Label(1, i, list.get(i).getUserId()));

sheet.addCell(new jxl.write.Label(2, i, list.get(i).getUsername()));

sheet.addCell(new jxl.write.Label(3, i, list.get(i).getCrtTim()));

sheet.addCell(new jxl.write.Label(4, i, list.get(i).getComplTime()));

sheet.addCell(new jxl.write.Label(5, i, list.get(i).getCopId()));

sheet.addCell(new jxl.write.Label(6, i, list.get(i).getFirstname()));

sheet.addCell(new jxl.write.Label(7, i, list.get(i).getCrtTim()));

sheet.addCell(new jxl.write.Label(8, i, list.get(i).getUpdTim()));

}

book.write();

book.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

如何用js导出数据Excel

(function ($) {

Date.prototype.Format = function (fmt) {

var o = {

"M+": this.getMonth() + 1, //月份

"d+": this.getDate(), //日

"h+": this.getHours(), //小时

"m+": this.getMinutes(), //分

"s+": this.getSeconds(), //秒

"q+": Math.floor((this.getMonth() + 3) / 3), //季度

"S": this.getMilliseconds() //毫秒

};

if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));

for (var k in o)

if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));

return fmt;

}

$.fn.ExportExcel = function (thread_id,tab_id, options) {

var defaults = {

height: '24px',

'line-height': '24px',

margin: '0 5px',

padding: '0 11px',

color: '#000',

background: '#02bafa',

border: '1px #26bbdb solid',

'border-radius': '3px',

/*color: #fff;*/

display: 'inline-block',

'text-decoration': 'none',

'font-size': '12px',

outline: 'none',

cursor: 'pointer'

}

var options = $.extend(defaults, options);

return this.each(function () {

var currentObject = $(this); //获取当前对象

currentObject.css(defaults);

currentObject.onmouseover = function () {

$(this).css('cursor', 'hand');

};

currentObject.click(function () {

//From:jsfiddle.net/h42y4ke2/16/

var tab_text = 'html xmlns:x="urn:schemas-microsoft-com:office:excel"';

tab_text = tab_text + 'headxmlx:ExcelWorkbookx:ExcelWorksheetsx:ExcelWorksheet';

tab_text = tab_text + 'x:NameTest Sheet/x:Name';

tab_text = tab_text + 'x:WorksheetOptionsx:Panes/x:Panes/x:WorksheetOptions/x:ExcelWorksheet';

tab_text = tab_text + '/x:ExcelWorksheets/x:ExcelWorkbook/xml/headbody';

tab_text = tab_text + "table border='1px'";

tab_text = tab_text + $('#' + thread_id).html();

tab_text = tab_text + $('#' + tab_id).html();

tab_text = tab_text + '/table/body/html';

var data_type = 'data:application/vnd.ms-excel';

var timeStr = new Date().Format('yyyyMMddhhmmss');

$(this).attr('href', data_type + ', ' + encodeURIComponent(tab_text));

$(this).attr('download', '日常数据报表' + timeStr + '.xls');

});

})

}

})(jQuery);

html

a href="#" id="export"导出/a

table

thead id="theadDate"

tr

th姓名/th

th班级/th

th年龄/th

/tr

/thead

tbody id="tbodyDate"

tr  td张三/td

td高二/td

td18/td

/tr

tr

td李四/td

td高三/td

td20/td

/tr

/tbody

/table

script src="assets/javascripts/autotest/export-excel.js" /script!-- 引入js文件--

script type="text/javascript"

//导出 调用

$(function () {

$('#export').ExportExcel('theadDate','tbodyDate'); //tbodyDate为table的id,export为a标签。

});

/script

/html

js如何导出exel文件

一。导出Excel有两种:

1.

function ExportExcel(tableid){//读取表格中每个单元到EXCEL中

try

{

var curTbl = document.getElementById(tableid);

var oXL = new ActiveXObject("Excel.Application"); //创建AX对象excel

var oWB = oXL.Workbooks.Add(); //获取workbook对象

var oSheet = oWB.ActiveSheet; //激活当前sheet

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; //设置excel可见属性

}

catch(e)

{

alert(e.message);

}

}

2:

function dataToExcel(tableid) {//整个表格拷贝到EXCEL中

var curTbl = document.getElementById(tableid);

var oXL;

try {

oXL = GetObject("", "Excel.Application");

}

catch (E) {

try {

oXL = new ActiveXObject("Excel.Application");

}

catch (E2) {

//alert("Please confirm:/n1.Microsoft Excel has been installed./n2.Internet Options=Security=Setting /"Enable unsafe ActiveX/"");

alert("请确认:/n1.机器上Excel已经安装./n2.Internet 选项=安全=Internet /"对没有标记为安全的ActiveX控件进行初始化和脚本运行,设定为启用/"");

return;

}

}

//创建AX对象excel

var oWB = oXL.Workbooks.Add();

//获取workbook对象

var oSheet = oWB.ActiveSheet;

//激活当前sheet

var sel = document.body.createTextRange();

sel.moveToElementText(curTbl);

//把表格中的内容移到TextRange中

sel.select();

//全选TextRange中内容

sel.execCommand("Copy");

//复制TextRange中内容

oSheet.Paste();

//粘贴到活动的EXCEL中

oXL.Visible = true;

//设置excel可见属性

}

js 导出大数据到excel

完整代码:

//导出excelfunction tableToExcel(){

var arrSor = ["sorttable10","sorttable30","sorttable60","sorttable120"]

let str = "";

for (var k = 0; k arrSor.length; k++) {

var tab=document.getElementById(arrSor[k]);

var rows=tab.rows;

const jsonData = [];

for(var i=2;irows.length;i++){ //遍历表格的行

var json = {};

for(var j=0;jrows[i].cells.length;j++){ //遍历每行的列

json[(i+1)+"-"+(j+1)] = rows[i].cells[j].innerHTML;

}

jsonData.push(json);

}

//列标题

let str1 = "trtd align='center' colspan='5'b最大"+arrSor[k].substring(9,arrSor[k].length)+"分钟雨量/b/td/tr";

let str2 = "tr align='center'th站点/thth站名/thth雨量最大值/thth降水时段/thth落入最大降水时段/th/tr";

//循环遍历,每行加入tr标签,每个单元格加td标签

for(let i = 0 ; i jsonData.length ; i++ ){

str2+='tr';

for(let item in jsonData[i]){

//增加/t为了不让表格显示科学计数法或者其他格式

var itemTem= jsonData[i][item];

if (itemTem == "暂无数据") {

str2+=`td colspan='5' align='center'${ itemTem + '/t'}/td`;

}else {

str2+=`td align='center'${ itemTem + '/t'}/td`;

}

}

str2+='/tr';

}

let str3 = "trtd colspan='5'/td/tr";

str += (str1 + str2 + str3);

}

let worksheet = '雨量最大值'

let uri = 'data:application/vnd.ms-excel;base64,';

//下载的表格模板数据

let template = `html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns=""headmeta charset='UTF-8'!--[if gte mso 9]xml

x:ExcelWorkbookx:ExcelWorksheetsx:ExcelWorksheet

x:Name${worksheet}/x:Namex:WorksheetOptionsx:DisplayGridlines//x:WorksheetOptions/x:ExcelWorksheet/x:ExcelWorksheets/x:ExcelWorkbook/xml![endif]--

style type="text/css"

table {border: 1px solid #000000;}

table tr td b {background:#FFFFFF;color:#3D3D3D;font-size:24px;border: 1px solid #000000;}

table th {background:#AEE1FE;color:#3D3D3D;font-size:20px;border: 1px solid #000000;}

table td {background:#FFFFFF;color:#3D3D3D;font-size:20px;border: 1px solid #000000;}/style

/headbodytable${str}/table/body/html`;

//下载模板

// window.location.href = uri + this.base64(template)

var link = document.createElement("a");

link.href = uri + this.base64(template);

link.download = "雨量最大值-" +new Date().format("yyyy年MM月dd日 h时")+ ".xls";

link.style = "visibility:hidden";

document.body.appendChild(link);

link.click();

document.body.removeChild(link);}//输出base64编码function base64 (template) {

return window.btoa(unescape(encodeURIComponent(template))) }

解析:

遍历取出表,顺序是行从上往下,列从左往右,将数据存进数组,下面再拼接成表。

image.png

参考文章:

第一种方法(大量数据导出)

//导出excelfunction tableToExcel() {

var arrSor = ["sorttable10","sorttable30","sorttable60","sorttable120"]

let str = "";

for (var k = 0; k arrSor.length; k++) {

var tab=document.getElementById(arrSor[k]);

var rows=tab.rows;

const jsonData = [];

for(var i=2;irows.length;i++){ //遍历表格的行

var json = {};

for(var j=0;jrows[i].cells.length;j++){ //遍历每行的列

if (rows[i].cells[j].outerHTML.indexOf("rgb(255, 255, 0)") != -1) {

json["yellow"+(i+1)+"-"+(j+1)] = rows[i].cells[j].innerHTML;

}else {

json[(i+1)+"-"+(j+1)] = rows[i].cells[j].innerHTML;

}

}

jsonData.push(json);

}

//列标题

let str1 = "trtd colspan='5' align='center' style='background-color:#FFFFFF;font-size:24px;border: 1px solid #000000;'b最大"

+arrSor[k].substring(9,arrSor[k].length)+"分钟雨量/b/td/tr";

let str2 = "tr" +

"th style='background-color:#AEE1FE;font-size:22px;border: 1px solid #000000;' align='center'站点/th" +

"th style='background-color:#AEE1FE;font-size:22px;border: 1px solid #000000;' align='center'站名/th" +

"th style='background-color:#AEE1FE;font-size:22px;border: 1px solid #000000;' align='center'雨量最大值/th" +

"th style='background-color:#AEE1FE;font-size:22px;border: 1px solid #000000;' align='center'降水时段/th" +

"th style='background-color:#AEE1FE;font-size:22px;border: 1px solid #000000;' align='center'落入最大降水时段/th/tr";

//循环遍历,每行加入tr标签,每个单元格加td标签

for(let i = 0 ; i jsonData.length ; i++ ){

str2+="tr align='center'";

for(let item in jsonData[i]){

if (item.indexOf("yellow") != -1) {//取列数等于3

//增加/t为了不让表格显示科学计数法或者其他格式

var itemTem= jsonData[i][item];

if (itemTem == "暂无数据") {

str2+=`td colspan='5' style='background-color:#FFFF00;font-size:22px;border: 1px solid #000000;' ${ itemTem + '/t'}/td`;

}else {

str2+=`td style='background-color:#FFFF00;font-size:22px;border: 1px solid #000000;' ${ itemTem + '/t'}/td`;

}

}else {

//增加/t为了不让表格显示科学计数法或者其他格式

var itemTem= jsonData[i][item];

if (itemTem == "暂无数据") {

str2+=`td colspan='5' style='background-color:#FFFFFF;font-size:22px;border: 1px solid #000000;' ${ itemTem + '/t'}/td`;

}else {

str2+=`td style='background-color:#FFFFFF;font-size:22px;border: 1px solid #000000;' ${ itemTem + '/t'}/td`;

}

}

}

str2+='/tr';

}

let str3 = "trtd colspan='5' style='background-color:#FFFFFF;border: 1px solid #000000;'/td/tr";

str += (str1 + str2 + str3);

}

var tableHtml="htmlheadmeta charset='UTF-8'/headbodytable"+str+"/body/html"

var excelBlob = new Blob([tableHtml], {type: 'application/vnd.ms-excel'});

var fileName = "雨量最大值-"+new Date().format("yyyy年MM月dd日 h时")+".xls";

if(isIE()){

window.navigator.msSaveOrOpenBlob(excelBlob,fileName);

}else{

var oa = document.createElement('a');

oa.href = URL.createObjectURL(excelBlob);

oa.download = fileName;

document.body.appendChild(oa);

oa.click();

}} //判断是否IE浏览器function isIE() {

if (!!window.ActiveXObject || "ActiveXObject" in window) {

return true;

} else {

return false;

}}

参考文章:

js如何导出excel

简单的办法:使用js生成一个table,可以直接复制到excel中,网上有很多表格插件

复杂的办法:js传递数据到服务器,服务器生成表格后返回一个下载链接