node-xlsx: 基於Node.js解析excel文件數據及生成excel文件;
excel-parser: 基於Node.js解析excel文件數據,支持xls及xlsx格式文件;
excel-export : 基於Node.js將數據生成導出excel文件,生成文件格式為xlsx;
node-xlrd: 基於node.js從excel文件中提取數據,僅支持xls格式文件。
用一個處理Excel文件的項目來說明
首先新建文件夾xlsx,在此文件夾下安裝依賴
新建input文件夾,並將需要修改的文件拷貝到此文件夾下
新建index.js文件
執行js腳本:
在output文件夾下查詢修改後文件
❷ EasyUI 結合JS導出Excel文件的實現方法
廢話俺就少說了,直接進入正題!!單純的JS能夠導出Excel的不多見,一般都需要調用客戶端所安裝的Office
Excel組件來完成這個工作。這里我主要講EasyUI內的DataGrid如何結合JS導出Excel文件
一、
導出Excel的核心代碼段如下所示
function
Exproter()
{
//獲取Datagride的列
var
rows
=
$('#test').datagrid('getRows');
var
oXL
=
new
ActiveXObject("Excel.Application");
//創建AX對象excel
var
oWB
=
oXL.Workbooks.Add();
//獲取workbook對象
var
oSheet
=
oWB.ActiveSheet;
//激活當前sheet
for
(var
i
=
0;
i
<
rows.length;
i++)
{
oSheet.Cells(i
+
1,
1).value
=
rows[i].O_NAME;
}
oXL.Visible
=
true;
//設置excel可見屬性
}
二、以上JS方法能夠順利執行的大前提就是
1.機器上Excel已經安裝.
2.Internet
選項=>安全=>Internet
\"對沒有標記為安全的ActiveX控制項進行初始化和腳本運行,設定為啟用\"
//EasyUI
datagrid
動態導出Excel
function
ExporterExcel()
{
//獲取Datagride的列
var
rows
=
$('#tt').datagrid('getRows');
var
columns
=
$("#tt").datagrid("options").columns[0];
var
oXL
=
new
ActiveXObject("Excel.Application");
//創建AX對象excel
var
oWB
=
oXL.Workbooks.Add();
//獲取workbook對象
var
oSheet
=
oWB.ActiveSheet;
//激活當前sheet
//設置工作薄名稱
oSheet.name
=
"導出Excel報表";
//設置表頭
for
(var
i
=
0;
i
<
columns.length;
i++)
{
oSheet.Cells(1,
i+1).value
=
columns[i].title;
}
//設置內容部分
for
(var
i
=
0;
i
<
rows.length;
i++)
{
//動態獲取每一行每一列的數據值
for
(var
j
=
0;
j
<
columns.length;
j++)
{
oSheet.Cells(i
+
2,
j+1).value
=
rows[i][columns[j].field];
}
}
oXL.Visible
=
true;
//設置excel可見屬性
}
以上就是小編為大家帶來的EasyUI
結合JS導出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;i<rows.length;i++){ //遍歷表格的行
var json = {};
for(var j=0;j<rows[i].cells.length;j++){ //遍歷每行的列
json[(i+1)+"-"+(j+1)] = rows[i].cells[j].innerHTML;
}
jsonData.push(json);
}
//列標題
let str1 = "<tr><td align='center' colspan='5'><b>最大"+arrSor[k].substring(9,arrSor[k].length)+"分鍾雨量</b></td></tr>";
let str2 = "<tr align='center'><th>站點</th><th>站名</th><th>雨量最大值</th><th>降水時段</th><th>落入最大降水時段</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 = "<tr><td 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="http://www.w3.org/TR/REC-html40"><head><meta charset='UTF-8'><!--[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 {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>
</head><body><table>${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
參考文章:https://blog.csdn.net/hhzzcc_/article/details/80419396
第一種方法(大量數據導出)
//導出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;i<rows.length;i++){ //遍歷表格的行
var json = {};
for(var j=0;j<rows[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 = "<tr><td 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 = "<tr><td colspan='5' style='background-color:#FFFFFF;border: 1px solid #000000;'></td></tr>";
str += (str1 + str2 + str3);
}
var tableHtml="<html><head><meta charset='UTF-8'></head><body><table>"+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;
}}
參考文章:https://blog.csdn.net/qq_34169240/article/details/84231226
❹ js 導出excel 問題
<HTML>
<HEAD>
<TITLE>將頁面中指定表格的數據導入到Excel中</TITLE>
<SCRIPT LANGUAGE="javascript">
<!--
function AutoExcel(){
var oXL = new ActiveXObject("Excel.Application"); //創建應該對象
var oWB = oXL.Workbooks.Add();//新建一個Excel工作簿
var oSheet = oWB.ActiveSheet;//指定要寫入內容的工作表為活動工作表
var table = document.getElementById("data");//指定要寫入的數據源的id
var 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;
oXL.UserControl = true;
oXL=null
}
//-->
</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="AutoExcel();" value="導出到excel">
</BODY>
</HTML>
❺ js中的數據怎樣導出到excel
簡單的辦法:使用js生成一個table,可以直接復制到excel中,網上有很多表格插件
復雜的辦法:js傳遞數據到伺服器,伺服器生成表格後返回一個下載鏈接
❻ 使用 excelJs 插件導出 excel(原生js)
插件如果導致這個導出來的話,那麼這個是可以直接導出另一個格式的,這種格式可能會更適合一點。
❼ JS 下載/導出 csv、excel、txt 、img等文件的方法總結
1. 調用後端介面導出文件
示例下載介面url https://gold-cdn.xitu.io/extension/0.3.9/package.crx
1.1 window.open(url)
會打開一個新窗口,開始下載後會自動關閉新窗口。Safair 下載後沒有關閉新窗口。
Chrome、IE、Safair支持,貌似火狐不支持
1.2 window.location=url
在當前窗口下載
Chrome、Safair支持
1.3 iframe
在HTML中,iframe 的屬性用src,但在JS中,只有部份瀏覽器支持修改src(讀是沒問題),真正通用的是要修改對應框架的href值。
1.4 <a href="url" download="filename">點擊鏈接下載</a>
HTML5中給a標簽增加了一個download屬性,只要有這個屬性,點擊這個鏈接時瀏覽器就不在打開鏈接指向的文件,而是改為下載,目前只有chrome、firefox、opera、Edge支持。常用此方法點擊下載圖片。
IE既不支持a標簽的download屬性也不允許js調用a 標簽的click方法。
2. 前端直接導出文件到本地
2.1 將數據轉成DataURI用<a>標簽下載
<a href="DataURI" download="filename">點擊鏈接下載</a>
Data URI Scheme
Data URI Scheme是指可以在Web 頁面中包含圖片但無需任何額外的HTTP 請求的一類URI。 Data URI Scheme一般用於將經過base64編碼的數據嵌入網頁中,從而減少請求資源的鏈接數。IE8 之前的版本都不支持 data URI scheme。
DataURI的格式:
生成DataURI的方式
1. encodeURIComponent
使用這種方式,當數據過多時,URI長度容易超出瀏覽器限制。 encodeURIComponent常用來轉碼介面參數,為了避免伺服器收到不可預知的請求,對任何用戶輸入的作為URI部分的內容都需要用encodeURIComponent進行轉義。
2. URL.createObjectURL
URL.createObjectURL的參數是File對象或者Blob對象
IE10以下不支持URL.createObjectURL
2.2 windows.navigator.msSaveBlob IE10~Edge 專用
msSaveBlob 是IE10~Edge 私有方法。
2.3 execCommand
有的資料有提到IE9可以使用execCommand方法來保存數據到本地文件,但是我自己沒有驗證過,不知道是否可行。而且MDN文檔中execCommand沒有查到SaveAs命令。這塊只是做個小記錄。
js數據直接導出/下載數據到本地到方法總結
本文轉載自:https://juejin.im/post/5cd00253518825418f6f2a8c?utm_source=gold_browser_extension
❽ Javascript實現把網頁中table的內容導出到excel中的幾種方法
一、 直接拷貝整個表格到中二、 通過遍歷表格,給EXCEL中相應的單元格賦值。三、 把表格中的內容提取出來,利用IE的另存為.csv的格式。各方法的好處:1. 直接拷貝表格,能夠保留表格中的原有的格式,比如,列,行的合並,對齊方式,底色等等,2. 通過遍歷表格,比較靈活,可以遍歷表格某些需要部分的內容。3. 利用IE的另存為,不用創建ActiveXObject對象,可以處理表格合並方面的問題。各方法的缺點:1. 可能彈出腳本錯誤:Automation不能創建對象。解決方法:啟用IE安全設置中的:對沒有標記為安全的ActiveX控制項進行初始化和腳本運行。由於整個表格復制到EXCEL中,給表格加個標題,並加入到EXCEL中可能會遇到麻煩。解決方法:首先在表格中加入第一行<tr><td colspan="x" align="center">&</td></tr>X,表示整個表格的列數,復制完整個表格後,加如下代碼,oSheet為當前活動的sheet.oSheet.Range(oSheet.Cells(1, 1), oSheet.Cells(1, x)).value = "表格標題";//設置標題oSheet.Rows(1).Font.Size = 16; //設置文字大小oSheet.Rows(1).Font.Name = "宋體";//設置文字字體註:以下屬性我沒用著,可能有用,也可能會報錯oSheet.Range(oSheet.Cells(1,1), oSheet.Cells(1,14)).mergecells=true; //合並單元格oSheet.Range(oSheet.Cells(1,1), oSheet.Cells(1,14)).Interior.ColorIndex=6;//設置底色?oSheet.Range(oSheet.Cells(1,1), oSheet.Cells(1,14)).Font.ColorIndex=5;//設置字體色?oSheet.Rows(1).RowHeight=20; //設置列高oSheet.Cells(iRow,iCol).Halignment=』2』//設置字體居中2. 可能彈出腳本錯誤:Automation不能創建對象(解決方法如上)。表格內容寫入到EXCEL中無表格線(未解決)且有單元格合並時會有問題,解決方法:合並單元格後再寫數據。oSheet.Range(oSheet.Cells(1,1), oSheet.Cells(1,14)).mergecells=true; //合並單元格3. 表格內容寫入到EXCEL中無表格線(未解決)表格格式復雜時,會有問題,(rowspan>1 or colspan>1),解決方法:一般都是表頭格式比較復雜,可先把表頭寫死,然後再循環寫其他數據。代碼如下:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</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>bbb</td><td>ccc</td><td>ddd</td><td>eee</td></tr><tr><td>AAA</td><td>BBB</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 = "";//alert("getXlsFromTbl");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.name + "->" + e.description + "!");}}
//---------------------------------------------
function getTblData(inTbl, inWindow) {var rows = 0;//alert("getTblData is " + inWindow);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++) {//alert("j is " + j);for (var i = 0; i < curTbl.rows[j].cells.length; i++) {//alert("i is " + i);if (i == 0 && rows > 0) {outStr += " ";rows -= 1;}outStr += curTbl.rows[j].cells[i].innerText + " ";if (curTbl.rows[j].cells[i].colSpan > 1) {for (var k = 0; k < curTbl.rows[j].cells[i].colSpan - 1; k++) {outStr += " ";}}if (i == 0) {if (rows == 0 && curTbl.rows[j].cells[i].rowSpan > 1) {rows = curTbl.rows[j].cells[i].rowSpan - 1;}}}outStr += " ";}}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";//alert(fileName);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();}
❾ firefox瀏覽器下用JS的方式導出excel
firefox瀏覽器下用JS的方式導出excel,可以依照以下方法:
1、沒有具體的代碼,但是可以為您提供一個實現思路。我們知道js導出文件實際就是輸出二進制文件(前提是您的瀏覽器許可權足以讓您的js腳本訪問本地文件),您只需要按照excel(組建單的是csv的格式)進行文件輸出即可,但是對於功能較為復雜的excel文件(如包含有函數、單元格鎖定等)則僅僅用js是無法實現的,推薦考慮使用jxls等專用伺服器端組件。
2、用下面這個方法來來導出excel
function exp() {
try{
windows.clipboardData.setData("Text",document.all('table1').outerHTML);
var ExApp = new ActiveXObject("Excel.Application")
var ExBk = ExApp.workbooks.add()
var ExWSh = ExWBk.worksheets(1)
ExApp.DisplayAlerts = false
ExApp.visible = true
}catch(e){
top.Dialog.alert("xxxxxxxxxxxxxxxx")
return false
}
ExWBk.worksheets(1).Paste;
3、也可以這樣:
<object style='display:none' classid="clsid:0002E559-0000-0000-C000-000000000046" id="EXPORT_OBJECT1"></object>
<script type="text/javascript">
EXPORT_OBJECT1. EXPORT_OBJECT1.Export([Filename],[Action],[Fromat]);
</script>