दिलचस्प पोस्ट
सरल पीएचपी पटकथा स्क्रिप्ट एक सूचीदृश्य से अपने माता-पिता के लिए स्क्रॉल इवेंट्स को बुदबुदाते हुए त्रुटि: कार्य निष्पादन के लिए विफल ': app: dexDebug' com.android.ide.common.process.ProcessException चयन सूची में छवियां कैसे जोड़ें HttpServletRequest – संदर्भ URL प्राप्त करने के लिए कैसे? मैं PHP में त्रुटि 404 कैसे बना सकता हूं? उप-क्लासिंग एनएसओपरेशन को समवर्ती और रद्द करने योग्य मैं कैसे एक डाटालेट फ़िल्टर कर सकता हूं? एक प्रकार या चर के साथ "सी" आकार एएसपी.नेट एमवीसी में सत्र चर पायथन रिगेक्स मिलान वाले यूनिकोड गुण मेरे पृष्ठ में एक डिवेल में jQuery.load से बाहरी पृष्ठ लोड नहीं किया जा सकता सख्त का उपयोग करते समय एक अनाम समारोह में "यह" क्यों अनिर्धारित है? मैं एएसपी.नेट एमवीसी नियंत्रक को एक फार्म के बिना स्ट्रिंग की सरणी कैसे पोस्ट कर सकता हूं? conda, condi, conde, condu

जावास्क्रिप्ट का उपयोग करके एक्सल के लिए एचटीएमएल टेबल को कैसे निर्यात करें

मेरी मेज प्रारूप में है

<table id="mytable"> <thead> <tr> <th>name</th> <th>place</th> </tr> </thead> <tbody> <tr> <td>adfas</td> <td>asdfasf</td> </tr> </tbody> </table> 

मुझे निम्नलिखित कोड ऑनलाइन मिला। लेकिन अगर मैं "thead" और "tbody" टैग का उपयोग करता हूं तो यह काम नहीं करता है

 function write_to_excel() { str = ""; var mytable = document.getElementsByTagName("table")[0]; var rowCount = mytable.rows.length; var colCount = mytable.getElementsByTagName("tr")[0].getElementsByTagName("td").length; var ExcelApp = new ActiveXObject("Excel.Application"); var ExcelSheet = new ActiveXObject("Excel.Sheet"); ExcelSheet.Application.Visible = true; for (var i = 0; i < rowCount; i++) { for (var j = 0; j < colCount; j++) { str = mytable.getElementsByTagName("tr")[i].getElementsByTagName("td")[j].innerHTML; ExcelSheet.ActiveSheet.Cells(i + 1, j + 1).Value = str; } } 

वेब के समाधान से एकत्रित समाधान "जावास्क्रिप्ट का उपयोग करके एक्सल के लिए एचटीएमएल टेबल को कैसे निर्यात करें"

जिस कारण से आप इंटरनेट पर मिले समाधान का कोई काम नहीं है उस पंक्ति के कारण जो var colCount शुरू करता है परिवर्तनीय mytable केवल दो तत्व हैं <thead> और <tbody> var colCount लाइन var colCount अंदर सभी तत्वों की तलाश कर रही है जो कि <tr> सबसे अच्छी बात यह है कि आप अपने <thead> और <tbody> को आईडी दें और उसके आधार पर सभी मूल्यों को पकड़ लें। कहो कि आपके पास <thead id='headers'> :

 function write_headers_to_excel() { str=""; var myTableHead = document.getElementById('headers'); var rowCount = myTableHead.rows.length; var colCount = myTableHead.getElementsByTagName("tr")[0].getElementsByTagName("th").length; var ExcelApp = new ActiveXObject("Excel.Application"); var ExcelSheet = new ActiveXObject("Excel.Sheet"); ExcelSheet.Application.Visible = true; for(var i=0; i<rowCount; i++) { for(var j=0; j<colCount; j++) { str= myTableHead.getElementsByTagName("tr")[i].getElementsByTagName("th")[j].innerHTML; ExcelSheet.ActiveSheet.Cells(i+1,j+1).Value = str; } } } 

और फिर <tbody> टैग के लिए एक ही बात करें

संपादित करें: मैं भी बहुत jQuery का उपयोग करने की सिफारिश करेंगे इससे यह संक्षिप्त होगा:

 function write_to_excel() { var ExcelApp = new ActiveXObject("Excel.Application"); var ExcelSheet = new ActiveXObject("Excel.Sheet"); ExcelSheet.Application.Visible = true; $('th, td').each(function(i){ ExcelSheet.ActiveSheet.Cells(i+1,i+1).Value = this.innerHTML; }); } 

अब, ज़ाहिर है, यह आपको कुछ स्वरूपण मुद्दों को दे रहा है लेकिन आप यह काम कर सकते हैं कि आप इसे Excel में कैसे प्रारूपित करना चाहते हैं

संपादित करें: तालिकाओं की संख्या के लिए ऐसा करने के बारे में अपने प्रश्न का उत्तर देने के लिए, jQuery यह पहले से ही करेगा। इसे कच्चे जावास्क्रिप्ट में करने के लिए, सभी तालिकाओं को पकड़ो और फिर एक पैरामीटर के रूप में तालिका में पास करने में सक्षम होने के लिए फ़ंक्शन को परिवर्तित करें उदाहरण के लिए:

 var tables = document.getElementsByTagName('table'); for(var i = 0; i < tables.length; i++) { write_headers_to_excel(tables[i]); write_bodies_to_excel(tables[i]); } 

फिर function write_headers_to_excel(table) को function write_headers_to_excel(table) करने के लिए function write_headers_to_excel(table) function write_headers_to_excel() परिवर्तित करें फिर var myTableHead = document.getElementById('headers'); बदलें var myTableHead = document.getElementById('headers'); to var myTableHead = table.getElementsByTagName('thead')[0]; । आपके write_bodies_to_excel() साथ ही या फिर भी आप इसे सेट करना चाहते हैं

केवल मोज़िला, क्रोम और सफारी में काम करता है ..

 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.0.js"> </script> <script type="text/javascript"> $(function(){ $('button').click(function(){ var url='data:application/vnd.ms-excel,' + encodeURIComponent($('#tableWrap').html()) location.href=url return false }) }) </script> <style type="text/css"> </style> <title>Untitled</title> </head> <body> <button>click me</button> <div id="tableWrap"> <table> <thead> <tr><th>A</th><th>B</th><th>C</th></tr> </thead> <tbody> <tr><td>1</td><td>2</td><td>3</td></tr> <tr><td>1</td><td>2</td><td>3</td></tr> <tr><td>1</td><td>2</td><td>3</td></tr> <tr><td>1</td><td>2</td><td>3</td></tr> </tbody> </table> </div> </body> </html> 

यह एक बेहतर जवाब हो सकता है जो इस प्रश्न से कॉपी हो। कृपया इसे आज़माएं और राय दें। यदि उपयोगी हो तो कृपया वोट दें धन्यवाद।

 <script type="text/javascript"> function generate_excel(tableid) { var table= document.getElementById(tableid); var html = table.outerHTML; window.open('data:application/vnd.ms-excel;base64,' + base64_encode(html)); } function base64_encode (data) { // http://kevin.vanzonneveld.net // + original by: Tyler Akins (http://rumkin.com) // + improved by: Bayron Guevara // + improved by: Thunder.m // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + bugfixed by: Pellentesque Malesuada // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + improved by: Rafal Kukawski (http://kukawski.pl) // * example 1: base64_encode('Kevin van Zonneveld'); // * returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA==' // mozilla has this native // - but breaks in 2.0.0.12! //if (typeof this.window['btoa'] == 'function') { // return btoa(data); //} var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, enc = "", tmp_arr = []; if (!data) { return data; } do { // pack three octets into four hexets o1 = data.charCodeAt(i++); o2 = data.charCodeAt(i++); o3 = data.charCodeAt(i++); bits = o1 << 16 | o2 << 8 | o3; h1 = bits >> 18 & 0x3f; h2 = bits >> 12 & 0x3f; h3 = bits >> 6 & 0x3f; h4 = bits & 0x3f; // use hexets to index into b64, and append result to encoded string tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4); } while (i < data.length); enc = tmp_arr.join(''); var r = data.length % 3; return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3); } </script> 
 Excel Export Script works on IE7+ , Firefox and Chrome =========================================================== function fnExcelReport() { var tab_text="<table border='2px'><tr bgcolor='#87AFC6'>"; var textRange; var j=0; tab = document.getElementById('headerTable'); // id of table for(j = 0 ; j < tab.rows.length ; j++) { tab_text=tab_text+tab.rows[j].innerHTML+"</tr>"; //tab_text=tab_text+"</tr>"; } tab_text=tab_text+"</table>"; tab_text= tab_text.replace(/<A[^>]*>|<\/A>/g, "");//remove if u want links in your table tab_text= tab_text.replace(/<img[^>]*>/gi,""); // remove if u want images in your table tab_text= tab_text.replace(/<input[^>]*>|<\/input>/gi, ""); // reomves input params var ua = window.navigator.userAgent; var msie = ua.indexOf("MSIE "); if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // If Internet Explorer { txtArea1.document.open("txt/html","replace"); txtArea1.document.write(tab_text); txtArea1.document.close(); txtArea1.focus(); sa=txtArea1.document.execCommand("SaveAs",true,"Say Thanks to Sumit.xls"); } else //other browser not tested on IE 11 sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text)); return (sa); } Just Create a blank iframe enter code here <iframe id="txtArea1" style="display:none"></iframe> Call this function on <button id="btnExport" onclick="fnExcelReport();"> EXPORT </button> 
  function XLExport() { try { var i; var j; var mycell; var tableID = "tblInnerHTML"; var objXL = new ActiveXObject("Excel.Application"); var objWB = objXL.Workbooks.Add(); var objWS = objWB.ActiveSheet; for (i = 0; i < document.getElementById('<%= tblAuditReport.ClientID %>').rows.length; i++) { for (j = 0; j < document.getElementById('<%= tblAuditReport.ClientID %>').rows(i).cells.length; j++) { mycell = document.getElementById('<%= tblAuditReport.ClientID %>').rows(i).cells(j); objWS.Cells(i + 1, j + 1).Value = mycell.innerText; } } //objWS.Range("A1", "L1").Font.Bold = true; objWS.Range("A1", "Z1").EntireColumn.AutoFit(); //objWS.Range("C1", "C1").ColumnWidth = 50; objXL.Visible = true; } catch (err) { } } 

इसे बाहर की जाँच करें … मुझे यह काम मिल गया है और ऐसा लगता है कि आप भी ऐसा करने की कोशिश कर रहे हैं।

2 फ़ंक्शन एक तालिका का चयन करने के लिए और इसे क्लिपबोर्ड पर कॉपी करें, और दूसरा इसे सामूहिक रूप से उत्कृष्ट बनाने के लिए लिखता है बस write_to_excel () को कॉल करें और अपनी तालिका आईडी डालें (या उसे तर्क के रूप में लेने के लिए इसे संशोधित करें)।

  function selectElementContents(el) { var body = document.body, range, sel; if (document.createRange && window.getSelection) { range = document.createRange(); sel = window.getSelection(); sel.removeAllRanges(); try { range.selectNodeContents(el); sel.addRange(range); } catch (e) { range.selectNode(el); sel.addRange(range); } } else if (body.createTextRange) { range = body.createTextRange(); range.moveToElementText(el); range.select(); } range.execCommand("Copy"); } function write_to_excel() { var tableID = "AllItems"; selectElementContents( document.getElementById(tableID) ); var excel = new ActiveXObject("Excel.Application"); // excel.Application.Visible = true; var wb=excel.WorkBooks.Add(); var ws=wb.Sheets("Sheet1"); ws.Cells(1,1).Select; ws.Paste; ws.DrawingObjects.Delete; ws.Range("A1").Select excel.Application.Visible = true; } 

भारी से प्रभावित: जावास्क्रिप्ट के साथ एक पूरी तालिका का चयन करें (क्लिपबोर्ड पर कॉपी किया जाना है)

मुझे लगता है कि आप वैकल्पिक आर्किटेक्चर के बारे में भी सोच सकते हैं। कभी-कभी कुछ अन्य तरीकों से किया जा सकता है, जितना आसान। यदि HTML फ़ाइल के निर्माता आप हैं, तो आप सर्वर पर एक्सेल दस्तावेज़ बनाने के लिए एक HTTP हैंडल लिख सकते हैं (जो कि जावास्क्रिप्ट की तुलना में ज्यादा आसान है) और क्लाइंट को फाइल भेजते हैं। अगर आपको उस HTML फ़ाइल को कहीं से (एक रिपोर्ट के एक HTML संस्करण की तरह) मिलता है, तो आप अभी भी एक बहुत ही आसानी से एक्सेल फ़ाइल बनाने के लिए सी # या PHP जैसी सर्वर साइड भाषा का उपयोग कर सकते हैं मेरा मतलब है, आपके पास अन्य तरीके भी हो सकते हैं। 🙂

मैं एक अलग दृष्टिकोण का उपयोग करने का सुझाव दूंगा वेबपेज पर एक बटन जोड़ें जिसमें तालिका की सामग्री को क्लिपबोर्ड पर प्रतिलिपि होगी, कॉलम और पंक्तियों के बीच नई लाइनों के बीच टैब वर्णों के साथ। इस तरह Excel में "पेस्ट" फ़ंक्शन सही ढंग से काम करना चाहिए और आपका वेब एप्लिकेशन कई ब्राउज़रों और कई ऑपरेटिंग सिस्टम (लिनक्स, मैक, मोबाइल) पर भी काम करेगा और उपयोगकर्ता अन्य स्प्रेडशीट या वर्ड प्रोसेसिंग के साथ भी डेटा का उपयोग करने में सक्षम होंगे कार्यक्रम।

केवल मुश्किल भाग क्लिपबोर्ड पर प्रतिलिपि करना है क्योंकि कई ब्राउज़र इस पर सिक्योरिटी सुरक्षा कर रहे हैं। एक समाधान पहले से टेक्सटेरा में चयनित डेटा को तैयार करना है, और इसे उपयोगकर्ता को एक मोडल डायलॉग बॉक्स में दिखाता है, जहां आप पाठ को प्रतिलिपि करने के लिए उपयोगकर्ता को बताते हैं (कुछ को टाइप करने की आवश्यकता होगी- Ctrl-C, अन्य कमांड-सी, अन्य "लंबे स्पर्श" या पॉपअप मेनू का उपयोग करें)।

यह एक मानक कॉपी-टू-क्लिपबोर्ड फ़ंक्शन होना अच्छा होगा जो संभवत: उपयोगकर्ता की पुष्टिकरण के लिए अनुरोध करता है … लेकिन यह दुर्भाग्यवश नहीं है।

मैं jquery के साथ इस कोशिश; इसका उपयोग करें और मज़े करो: डी

  jQuery.printInExcel = function (DivID) { var ExcelApp = new ActiveXObject("Excel.Application"); ExcelApp.Workbooks.Add; ExcelApp.visible = true; var str = ""; var tblcount = 0; var trcount = 0; $("#" + DivID + " table").each(function () { $(this).find("tr").each(function () { var tdcount = 0; $(this).find("td").each(function () { str = str + $(this).text(); ExcelApp.Cells(trcount + 1, tdcount + 1).Value = str; str = ""; tdcount++ }); trcount++ }); tblcount++ }); }; 

इसे अपने वर्ग में उपयोग करें और इसे $ .printInExcel ( अपने var ) के साथ कॉल करें;