1. js中的數據怎樣導出到excel
簡單的辦法:使用js生成一個table,可以直接復制到excel中,網上有很多表格插件
復雜的辦法:js傳遞數據到伺服器,伺服器生成表格後返回一個下載鏈接
2. ASP中,JS代碼實現將網頁上table裡面的數據導出到excel
什麼是HTML格式的EXCEL呢?
你打開一個Excel文件,另存為Html格式,就知道了
Response.ContentType 是告訴瀏覽器,伺服器回傳遞過來的內容是答什麼格式
這個值默認是text/html
這個要在所有的客戶機上設置瀏覽器許可權,比如IE的修改方法:
進入Internet屬性=》安全=》自定義級別,把ActiveX控制項和插件下的所有選項都改成啟用
因為js是客戶端的,所以伺服器不可能控制
我一般是用伺服器生成html格式的Excel,然後設置
Response.ContentType = "application/vnd.ms-excel";
Response.AppendHeader("Content-Disposition", "inline;filename=abc.xls");
這樣來下載excel,而且這樣不用修改客戶端的ie設置
3. 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();}
4. js 導 Excel
共分三步:
第一步:建立EXCEL.JS文件
====文件的代碼=========
var idTmr = "";
function (tabid)
{
var oControlRange = document.body.createControlRange();
oControlRange.add(tabid,0);
oControlRange.select();
document.execCommand("Copy");
}
function toExcel(tabid){
(tabid);
try
{
var xls = new ActiveXObject( "Excel.Application" );
}
catch(e)
{
alert( "Excel沒有安裝或瀏覽器設置不正確.請啟用所有Active控制項和插件");
return false;
}
xls.visible = true;
var xlBook = xls.Workbooks.Add;
var xlsheet = xlBook.Worksheets(1);
xlBook.Worksheets(1).Activate;
for(var i=0;i<tabid.rows(0).cells.length;i++){
xlsheet.Columns(i+1).ColumnWidth=15;
}
xlsheet.Paste;
xls=null;
idTmr = window.setInterval("Cleanup();",1);
}
function Cleanup() {
window.clearInterval(idTmr);
CollectGarbage();
}
================
第二步:在網頁中引用EXCEL.JS,並聲明一個表格ID
第三步:在網頁中控制項的ONCLICK事件中加入toExcel函數,將表格的ID作為參數傳入
例如:
<input type="button" onclick="toExcel(t1)">
<table id="t1"> //為表格聲明一個ID
希望上面的信息能給你帶來幫助
5. 如何用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 + '<head><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>';
tab_text = tab_text + '<x:Name>Test Sheet</x:Name>';
tab_text = tab_text + '<x:WorksheetOptions><x:Panes></x:Panes></x:WorksheetOptions></x:ExcelWorksheet>';
tab_text = tab_text + '</x:ExcelWorksheets></x:ExcelWorkbook></xml></head><body>';
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>
<td>18</td>
</tr>
<tr>
<td>李四</td>
<td>高三</td>
<td>20</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>
6. 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
7. 網頁數據導出excel的方法
在 Excel 中錄入數據的時候通常數據都是有源文件的,這個時候就可以直接從源文件直接導出到Excel,具體該怎麼導出呢?下面是我帶來的關於網頁數據導出excel的 方法 ,希望閱讀過後對你有所啟發!
網頁數據導出excel的方法:
網頁數據導出Excel步驟1:我舉得這個例子是網頁中關於2014年高考投檔情況的一個匯總表,不過在網頁中,如圖,我們可以看到共計是分成了17個網頁,看著就有些煩躁。
網頁數據導出Excel步驟2:如圖,我們可以直接把滑鼠放到表格處,右擊,選擇導出到excel中即可。
網頁數據導出Excel步驟3:如圖,這就是導出的excel,一直導出。
網頁數據導出Excel步驟4:將導出的 經驗 進行整理,如圖,整理到一個文件夾中。
網頁數據導出Excel步驟5:然後就可以參照我的這一篇經驗將所有的excel工作薄合並成一個即可。
網頁數據導出Excel步驟6:當然,至於弄成word版的就直接復制excel裡面粘貼就好了,記得粘貼的時候在excel中提前准備規劃好,別學我下圖中弄的這么丑就行。
8. 怎麼用js將excel中的數據讀取後顯示到網頁中的表格
1、進入Internet屬性。
2、點擊安全。
3、選擇自定義級別。
4、把ActiveX控制項和插件下的所有選項都改成啟用。
5、伺服器生成html格式的Excel,然後設置
9. 使用JS的方法將表格導出EXCEL時發生了「800A025E」的錯誤是怎麼回事
你檢查一下是不是表格裡面有隱藏的表格或者元素之類的,如果有的話,重新設置一下就好啦,下面我們看下JS怎麼導出excel的
創建一個html文件。接著在html文件中寫入一個table表格並且在表格如一些內容,給這個表格加個id為table,一邊後續的測試。
再接著就是看看在網上自己書寫的表格是什麼樣子的。然後就是用js寫一個函數用來將表格導出為excel文件。(函數名為AllAreaExcel)
最後就是書寫一個按鈕,用來執行書寫好的函數。在網頁上查看自己書寫的按鈕是長什麼樣子的。
點擊網頁上的按鈕後,執行成功,就會彈出一個對話框為「成功」,如下圖所示
10. js 導出excel
var oXL = new ActiveXObject("Excel.Application");
var oWB = oXL.Workbooks.Add();
var oSheet = oWB.Worksheets(1);
var Lenr = printB.rows.length;
for (i=0;i<Lenr;i++)
{
var Lenc = printB.rows(i).cells.length;
for (j=0;j<Lenc;j++)
{
oSheet.Columns(2).NumberFormatLocal="@";
//printB.rows(i).cells(j).NumberFormatLocal="@";
oSheet.Cells(i+1,j+1).value = printB.rows(i).cells(j).innerText;
}
}
oXL.Visible = true;
如果對您來有幫助自,請記得採納為滿意答案,謝謝!祝您生活愉快!
vaela