js导出excel带样式?// JavaScript Document//功能:导出多个表格到EXCEL或者ET//调用方法:toExcel('要导出的表格ID,以|分隔多个表格','输出到excel中的工作薄名称','导出的方式,0为不带格式,那么,js导出excel带样式?一起来了解一下吧。
简单的办法:使用js生成一个table,可以直接复制到excel中,网上有很多表格插件。
复杂的办法:js传递数据到服务器,服务器生成表格后返回一个链接。
JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。胡橡它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)模做配网页上使用,用来给HTML网页增加动态功能。
在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。
为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格,因为JavaScript兼容于ECMA标准,因此也称为ECMAScript。
Microsoft Excel是微软公司的办公Microsoft office的组件之一,是由Microsoft为Windows和Apple Macintosh操作的电脑而编写和旦指运行的一款试算表。
这次给大家带来如何使用js-xlsx之单元格样式,使用js-xlsx之单元格样式的注意事项有哪些,下面就是实战案例,一起来看一下。
xlsx-style
npm install xlsx-style
xlsx-style核心模块 在 你安装路径\node_modules\xlsx-style\dist
2.示例代码
复皮悄制出 文件xlsx.full.min.js
编写示例代码:
<仔哗!DOCTYPE html>
function saveAs(obj, fileName) { var tmpa = document.createElement("a");
tmpa.download = fileName || "";
tmpa.href = URL.createObjectURL(obj);
tmpa.click();
setTimeout(function () {
URL.revokeObjectURL(obj);
}, 100);
} var jsono = [{ "id": 1, "合并的列头1": "数据11", "合并的列头2": "数据12", "合并的列头3": "数据13", "合并的列头4": "数据14",
}, { "id": 2, "合并的列头1": "数据21", "合并的列头2": "数据22", "合并的列头3": "数据23", "合并的列头4": "数据24",
}]; const wopts = { bookType: 'xlsx', bookSST: true, type: 'binary', cellStyles: true }; function downloadExl(json, type) { var tmpdata = json[0];
json.unshift({}); var keyMap = []; //获取keys
for (var k in tmpdata) {
keyMap.push(k);
json[0][k] = k;
} var tmpdata = [];//用来保存转换好的json
json.map((v, i) => keyMap.map((k, j) => Object.assign({}, { v: v[k], position: (j > 25 ? getCharCol(j) : String.fromCharCode(65 + j)) + (i + 1)
}))).reduce((prev, next) => prev.concat(next)).forEach((v, i) => tmpdata[v.position] = { v: v.v
}); var outputPos = Object.keys(tmpdata); //设置区域,比如表燃戚渣格从A1到D10
tmpdata["B1"].s = { font: { sz: 14, bold: true, color: { rgb: "FFFFAA00" } }, fill: { bgColor: { indexed: 64 }, fgColor: { rgb: "FFFF00" } } };//<====设置xlsx单元格样式
tmpdata["!merges"] = [{ s: { c: 1, r: 0 }, e: { c: 4, r: 0 }
}];//<====合并单元格
var tmpWB = { SheetNames: ['mySheet'], //保存的表标题
Sheets: { 'mySheet': Object.assign({},
tmpdata, //内容
{ '!ref': outputPos[0] + ':' + outputPos[outputPos.length - 1] //设置填充区域
})
}
};
tmpDown = new Blob([s2ab(XLSX.write(tmpWB,
{ bookType: (type == undefined ? 'xlsx' : type), bookSST: false, type: 'binary' }//这里的数据是用来定义导出的格式类型
))], { type: ""
});
saveAs(tmpDown, "这里是的文件名" + '.' + (wopts.bookType == "biff2" ? "xls" : wopts.bookType));
} function getCharCol(n) { let temCol = '',
s = '',
m = 0
while (n > 0) {
m = n % 26 + 1
s = String.fromCharCode(m + 64) + s
n = (n - m) / 26
} return s
} function s2ab(s) { if (typeof ArrayBuffer !== 'undefined') { var buf = new ArrayBuffer(s.length); var view = new Uint8Array(buf); 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;
}
}
相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!
相关阅读:
如何使用canvas来制作好用的涂鸦画板
如何使用s-xlsx实现Excel 文件导入和导出(下)
一般的情况下是不可衫滚以的,因为ActiveXObject是ie的插件,只是使用于ie,其他浏览器都不适应,因为ie是windows的,灶塌梁在很多情况下是可以操隐运作windows的程序,别的浏览器要想考研的话,需要开发插件了
//JavaScriptDocument//功能:导出多个表格到EXCEL或者ET
//调用方法:toExcel('要导出的表格ID,以|分隔多个表格','输出到excel中的工作薄名称','导出的方式,0为不带格式,1为带格式','要导出的列数')
varidTmr="";
functionCleanup(){
window.clearInterval(idTmr);
CollectGarbage();
}
functiontoExcel(tableId,sheetname,method,cols){
if(!confirm("确认导出数据到EXCEL?")){returnfalse;}
vartables=tableId.split("|");
for(varn=0;n
if(!document.getElementById(tables[n])){
alert("表格"+tables[n]+"不存在,请检查是否有数据输出");
returnfalse;
}
}
try{
varoXL=newActiveXObject("excel.Application");
}catch(e1){
try{
varoXL=newActiveXObject("et.Application");
}catch(e2){
alert(e2.description+"\n\n\n要使用EXCEL对象,您必须安装Excel电子表格\n或者,需要安装KingsoftET\n\n同时浏览器须使用“ActiveX控件”,您的浏览器须允许执行控件。
jsxl单元格样式
一。导出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带样式的全部内容,1、没有具体的代码,但是可以为您提供一个实现思路。我们知道js导出文件实际就是输出二进制文件(前提是您的浏览器权限足以让您的js脚本访问本地文件),您只需要按照excel(组建单的是csv的格式)进行文件输出即可。