Created
October 7, 2014 16:09
-
-
Save justin3737/7e6627d4019c2ad5761e to your computer and use it in GitHub Desktop.
輸出下載 excel // source http://jsbin.com/todece/11
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> | |
<meta charset="utf-8"> | |
<title>輸出下載 excel</title> | |
<script type="text/javascript" src="http://oss.sheetjs.com/js-xlsx/xlsx.core.min.js"></script> | |
<script type="text/javascript" src="https://rawgithub.com/eligrey/Blob.js/master/Blob.js"></script> | |
<script type="text/javascript" src="https://rawgithub.com/eligrey/FileSaver.js/master/FileSaver.js"></script> | |
</head> | |
<body> | |
<script id="jsbin-javascript"> | |
;(function(){ | |
function datenum(v, date1904) | |
{ | |
if(date1904) v+=1462; | |
var epoch = Date.parse(v); | |
return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000); | |
} | |
function sheet_from_array_of_arrays(data, opts) | |
{ | |
var ws = {}; | |
var range = {s: {c:10000000, r:10000000}, e: {c:0, r:0 }}; | |
for(var R = 0; R != data.length; ++R) { | |
for(var C = 0; C != data[R].length; ++C) { | |
if(range.s.r > R) range.s.r = R; | |
if(range.s.c > C) range.s.c = C; | |
if(range.e.r < R) range.e.r = R; | |
if(range.e.c < C) range.e.c = C; | |
var cell = {v: data[R][C] }; | |
if(cell.v == null) continue; | |
var cell_ref = XLSX.utils.encode_cell({c:C,r:R}); | |
if(typeof cell.v === 'number') cell.t = 'n'; | |
else if(typeof cell.v === 'boolean') cell.t = 'b'; | |
else if(cell.v instanceof Date) { | |
cell.t = 'n'; cell.z = XLSX.SSF._table[14]; | |
cell.v = datenum(cell.v); | |
} | |
else cell.t = 's'; | |
ws[cell_ref] = cell; | |
} | |
} | |
if(range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range); | |
return ws; | |
} | |
function s2ab(s) { | |
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; | |
} | |
function Workbook() | |
{ | |
if(!(this instanceof Workbook)) return new Workbook(); | |
this.SheetNames = []; | |
this.Sheets = {}; | |
} | |
function save(fileName, arr) | |
{ | |
/* 設定欄寬 */ | |
var wscols = [ | |
{wch:15}, | |
{wch:12}, | |
{wch:12}, | |
{wch:30}, | |
{wch:12}, | |
{wch:12}, | |
{wch:12}, | |
{wch:15}, | |
{wch:20}, | |
{wch:12}, | |
{wch:12}, | |
{wch:12}, | |
{wch:12}, | |
{wch:40}, | |
{wch:15}, | |
{wch:15}, | |
{wch:20}, | |
{wch:20}, | |
{wch:12}, | |
{wch:12}, | |
{wch:12}, | |
{wch:12}, | |
{wch:40}, | |
]; | |
var data = []; | |
for (var i =0; i< arr.length; i++){ | |
var _newarr = []; | |
for(var n in arr[i] ){ | |
_newarr.push(arr[i][n]); | |
} | |
data.push(_newarr); | |
} | |
var wb = new Workbook(), ws = sheet_from_array_of_arrays(data); | |
/* add worksheet to workbook */ | |
wb.SheetNames.push(fileName); | |
wb.Sheets[fileName] = ws; | |
/* TEST: column widths */ | |
ws['!cols'] = wscols; | |
var wbout = XLSX.write(wb, {bookType:'xlsx', bookSST:true, type: 'binary'}); | |
saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), fileName + ".xlsx"); | |
} | |
window.saveXls = { | |
save : save | |
}; | |
})(); | |
//初始化 | |
$(function(){ | |
var data = [ | |
{ | |
'obj_orderid' : '訂單編號', | |
'obj_weight' : '重量', | |
'obj_size' : '尺寸', | |
'obj_name' : '品名', | |
'obj_amount' : '數量', | |
'obj_price' : '價值', | |
'sender_name' : '寄件人姓名', | |
'sender_phone' : '寄件人電話', | |
'sender_email' : '寄件人電子信箱', | |
'sender_country' : '寄件人國家', | |
'sender_city' : '寄件人城市', | |
'sender_prov' : '寄件人省份', | |
'sender_zip' : '寄件人郵編', | |
'sender_fulladdr': '寄件人完整地址', | |
'recip_name' : '收件人姓名', | |
'recip_phone' : '收件人電話', | |
'recip_email' : '收件人電子信箱', | |
'recip_id' : '收件人ID', | |
'recip_country' : '收件人國家', | |
'recip_city' : '收件人城市', | |
'recip_prov' : '收件人省份', | |
'recip_zip' : '收件人郵編', | |
'recip_fulladdr' : '收件人完整地址' | |
}, | |
{ | |
'obj_orderid' : 'xxx100011222xxd', | |
'obj_weight' : '1000g', | |
'obj_size' : '10x10x10', | |
'obj_name' : '吸塵器', | |
'obj_amount' : '10個', | |
'obj_price' : '2000', | |
'sender_name' : 'Mitch', | |
'sender_phone' : '0912333555', | |
'sender_email' : '[email protected]', | |
'sender_country' : 'TW', | |
'sender_city' : 'TP', | |
'sender_prov' : 'TW', | |
'sender_zip' : '12345', | |
'sender_fulladdr': '台北市大安區敦化南路二段77號', | |
'recip_name' : 'Justin', | |
'recip_phone' : '0912555777', | |
'recip_email' : '[email protected]', | |
'recip_id' : 'A123456789', | |
'recip_country' : 'TW', | |
'recip_city' : 'TP', | |
'recip_prov' : 'TW', | |
'recip_zip' : '23456', | |
'recip_fulladdr' : '台北市大安區敦化南路二段33號' | |
} | |
]; | |
var ws_name = "SheetJS"; | |
saveXls.save( ws_name, data); | |
}); | |
</script> | |
<script id="jsbin-source-html" type="text/html"><!DOCTYPE html> | |
<html> | |
<head> | |
<script src="//code.jquery.com/jquery-1.9.1.min.js"><\/script> | |
<meta charset="utf-8"> | |
<title>輸出下載 excel</title> | |
<script type="text/javascript" src="http://oss.sheetjs.com/js-xlsx/xlsx.core.min.js"><\/script> | |
<script type="text/javascript" src="https://rawgithub.com/eligrey/Blob.js/master/Blob.js"><\/script> | |
<script type="text/javascript" src="https://rawgithub.com/eligrey/FileSaver.js/master/FileSaver.js"><\/script> | |
</head> | |
<body> | |
</body> | |
</html></script> | |
<script id="jsbin-source-javascript" type="text/javascript">;(function(){ | |
function datenum(v, date1904) | |
{ | |
if(date1904) v+=1462; | |
var epoch = Date.parse(v); | |
return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000); | |
} | |
function sheet_from_array_of_arrays(data, opts) | |
{ | |
var ws = {}; | |
var range = {s: {c:10000000, r:10000000}, e: {c:0, r:0 }}; | |
for(var R = 0; R != data.length; ++R) { | |
for(var C = 0; C != data[R].length; ++C) { | |
if(range.s.r > R) range.s.r = R; | |
if(range.s.c > C) range.s.c = C; | |
if(range.e.r < R) range.e.r = R; | |
if(range.e.c < C) range.e.c = C; | |
var cell = {v: data[R][C] }; | |
if(cell.v == null) continue; | |
var cell_ref = XLSX.utils.encode_cell({c:C,r:R}); | |
if(typeof cell.v === 'number') cell.t = 'n'; | |
else if(typeof cell.v === 'boolean') cell.t = 'b'; | |
else if(cell.v instanceof Date) { | |
cell.t = 'n'; cell.z = XLSX.SSF._table[14]; | |
cell.v = datenum(cell.v); | |
} | |
else cell.t = 's'; | |
ws[cell_ref] = cell; | |
} | |
} | |
if(range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range); | |
return ws; | |
} | |
function s2ab(s) { | |
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; | |
} | |
function Workbook() | |
{ | |
if(!(this instanceof Workbook)) return new Workbook(); | |
this.SheetNames = []; | |
this.Sheets = {}; | |
} | |
function save(fileName, arr) | |
{ | |
/* 設定欄寬 */ | |
var wscols = [ | |
{wch:15}, | |
{wch:12}, | |
{wch:12}, | |
{wch:30}, | |
{wch:12}, | |
{wch:12}, | |
{wch:12}, | |
{wch:15}, | |
{wch:20}, | |
{wch:12}, | |
{wch:12}, | |
{wch:12}, | |
{wch:12}, | |
{wch:40}, | |
{wch:15}, | |
{wch:15}, | |
{wch:20}, | |
{wch:20}, | |
{wch:12}, | |
{wch:12}, | |
{wch:12}, | |
{wch:12}, | |
{wch:40}, | |
]; | |
var data = []; | |
for (var i =0; i< arr.length; i++){ | |
var _newarr = []; | |
for(var n in arr[i] ){ | |
_newarr.push(arr[i][n]); | |
} | |
data.push(_newarr); | |
} | |
var wb = new Workbook(), ws = sheet_from_array_of_arrays(data); | |
/* add worksheet to workbook */ | |
wb.SheetNames.push(fileName); | |
wb.Sheets[fileName] = ws; | |
/* TEST: column widths */ | |
ws['!cols'] = wscols; | |
var wbout = XLSX.write(wb, {bookType:'xlsx', bookSST:true, type: 'binary'}); | |
saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), fileName + ".xlsx"); | |
} | |
window.saveXls = { | |
save : save | |
}; | |
})(); | |
//初始化 | |
$(function(){ | |
var data = [ | |
{ | |
'obj_orderid' : '訂單編號', | |
'obj_weight' : '重量', | |
'obj_size' : '尺寸', | |
'obj_name' : '品名', | |
'obj_amount' : '數量', | |
'obj_price' : '價值', | |
'sender_name' : '寄件人姓名', | |
'sender_phone' : '寄件人電話', | |
'sender_email' : '寄件人電子信箱', | |
'sender_country' : '寄件人國家', | |
'sender_city' : '寄件人城市', | |
'sender_prov' : '寄件人省份', | |
'sender_zip' : '寄件人郵編', | |
'sender_fulladdr': '寄件人完整地址', | |
'recip_name' : '收件人姓名', | |
'recip_phone' : '收件人電話', | |
'recip_email' : '收件人電子信箱', | |
'recip_id' : '收件人ID', | |
'recip_country' : '收件人國家', | |
'recip_city' : '收件人城市', | |
'recip_prov' : '收件人省份', | |
'recip_zip' : '收件人郵編', | |
'recip_fulladdr' : '收件人完整地址' | |
}, | |
{ | |
'obj_orderid' : 'xxx100011222xxd', | |
'obj_weight' : '1000g', | |
'obj_size' : '10x10x10', | |
'obj_name' : '吸塵器', | |
'obj_amount' : '10個', | |
'obj_price' : '2000', | |
'sender_name' : 'Mitch', | |
'sender_phone' : '0912333555', | |
'sender_email' : '[email protected]', | |
'sender_country' : 'TW', | |
'sender_city' : 'TP', | |
'sender_prov' : 'TW', | |
'sender_zip' : '12345', | |
'sender_fulladdr': '台北市大安區敦化南路二段77號', | |
'recip_name' : 'Justin', | |
'recip_phone' : '0912555777', | |
'recip_email' : '[email protected]', | |
'recip_id' : 'A123456789', | |
'recip_country' : 'TW', | |
'recip_city' : 'TP', | |
'recip_prov' : 'TW', | |
'recip_zip' : '23456', | |
'recip_fulladdr' : '台北市大安區敦化南路二段33號' | |
} | |
]; | |
var ws_name = "SheetJS"; | |
saveXls.save( ws_name, data); | |
});</script></body> | |
</html> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;(function(){ | |
function datenum(v, date1904) | |
{ | |
if(date1904) v+=1462; | |
var epoch = Date.parse(v); | |
return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000); | |
} | |
function sheet_from_array_of_arrays(data, opts) | |
{ | |
var ws = {}; | |
var range = {s: {c:10000000, r:10000000}, e: {c:0, r:0 }}; | |
for(var R = 0; R != data.length; ++R) { | |
for(var C = 0; C != data[R].length; ++C) { | |
if(range.s.r > R) range.s.r = R; | |
if(range.s.c > C) range.s.c = C; | |
if(range.e.r < R) range.e.r = R; | |
if(range.e.c < C) range.e.c = C; | |
var cell = {v: data[R][C] }; | |
if(cell.v == null) continue; | |
var cell_ref = XLSX.utils.encode_cell({c:C,r:R}); | |
if(typeof cell.v === 'number') cell.t = 'n'; | |
else if(typeof cell.v === 'boolean') cell.t = 'b'; | |
else if(cell.v instanceof Date) { | |
cell.t = 'n'; cell.z = XLSX.SSF._table[14]; | |
cell.v = datenum(cell.v); | |
} | |
else cell.t = 's'; | |
ws[cell_ref] = cell; | |
} | |
} | |
if(range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range); | |
return ws; | |
} | |
function s2ab(s) { | |
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; | |
} | |
function Workbook() | |
{ | |
if(!(this instanceof Workbook)) return new Workbook(); | |
this.SheetNames = []; | |
this.Sheets = {}; | |
} | |
function save(fileName, arr) | |
{ | |
/* 設定欄寬 */ | |
var wscols = [ | |
{wch:15}, | |
{wch:12}, | |
{wch:12}, | |
{wch:30}, | |
{wch:12}, | |
{wch:12}, | |
{wch:12}, | |
{wch:15}, | |
{wch:20}, | |
{wch:12}, | |
{wch:12}, | |
{wch:12}, | |
{wch:12}, | |
{wch:40}, | |
{wch:15}, | |
{wch:15}, | |
{wch:20}, | |
{wch:20}, | |
{wch:12}, | |
{wch:12}, | |
{wch:12}, | |
{wch:12}, | |
{wch:40}, | |
]; | |
var data = []; | |
for (var i =0; i< arr.length; i++){ | |
var _newarr = []; | |
for(var n in arr[i] ){ | |
_newarr.push(arr[i][n]); | |
} | |
data.push(_newarr); | |
} | |
var wb = new Workbook(), ws = sheet_from_array_of_arrays(data); | |
/* add worksheet to workbook */ | |
wb.SheetNames.push(fileName); | |
wb.Sheets[fileName] = ws; | |
/* TEST: column widths */ | |
ws['!cols'] = wscols; | |
var wbout = XLSX.write(wb, {bookType:'xlsx', bookSST:true, type: 'binary'}); | |
saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), fileName + ".xlsx"); | |
} | |
window.saveXls = { | |
save : save | |
}; | |
})(); | |
//初始化 | |
$(function(){ | |
var data = [ | |
{ | |
'obj_orderid' : '訂單編號', | |
'obj_weight' : '重量', | |
'obj_size' : '尺寸', | |
'obj_name' : '品名', | |
'obj_amount' : '數量', | |
'obj_price' : '價值', | |
'sender_name' : '寄件人姓名', | |
'sender_phone' : '寄件人電話', | |
'sender_email' : '寄件人電子信箱', | |
'sender_country' : '寄件人國家', | |
'sender_city' : '寄件人城市', | |
'sender_prov' : '寄件人省份', | |
'sender_zip' : '寄件人郵編', | |
'sender_fulladdr': '寄件人完整地址', | |
'recip_name' : '收件人姓名', | |
'recip_phone' : '收件人電話', | |
'recip_email' : '收件人電子信箱', | |
'recip_id' : '收件人ID', | |
'recip_country' : '收件人國家', | |
'recip_city' : '收件人城市', | |
'recip_prov' : '收件人省份', | |
'recip_zip' : '收件人郵編', | |
'recip_fulladdr' : '收件人完整地址' | |
}, | |
{ | |
'obj_orderid' : 'xxx100011222xxd', | |
'obj_weight' : '1000g', | |
'obj_size' : '10x10x10', | |
'obj_name' : '吸塵器', | |
'obj_amount' : '10個', | |
'obj_price' : '2000', | |
'sender_name' : 'Mitch', | |
'sender_phone' : '0912333555', | |
'sender_email' : '[email protected]', | |
'sender_country' : 'TW', | |
'sender_city' : 'TP', | |
'sender_prov' : 'TW', | |
'sender_zip' : '12345', | |
'sender_fulladdr': '台北市大安區敦化南路二段77號', | |
'recip_name' : 'Justin', | |
'recip_phone' : '0912555777', | |
'recip_email' : '[email protected]', | |
'recip_id' : 'A123456789', | |
'recip_country' : 'TW', | |
'recip_city' : 'TP', | |
'recip_prov' : 'TW', | |
'recip_zip' : '23456', | |
'recip_fulladdr' : '台北市大安區敦化南路二段33號' | |
} | |
]; | |
var ws_name = "SheetJS"; | |
saveXls.save( ws_name, data); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment