मैं वेब पेज से एक्सेल में टेबल कैसे निर्यात कर सकता हूं [बंद]


97

मैं वेब पेज से एक्सेल में टेबल कैसे निर्यात कर सकता हूं। मैं चाहता हूं कि निर्यात में सभी स्वरूपण और रंग शामिल हों।


9
सबसे आसान तरीका शायद एक HTML दस्तावेज़ निर्यात करना है, जिसे एक्सेल खोल सकता है।
पेक्का

@Pekka मैंने कोशिश की है कि, यह सभी स्वरूपण / सीएसएस / स्तंभ आकार आदि खो देता है
कोड 511788465541441

3
@user आप स्तंभ आकार और इस तरह की घोषणा कहां कर रहे हैं? मैं एक्सेल को डेटा निर्यात करने से गहराई से परिचित नहीं हूं, लेकिन आपको उन्हें इनलाइन घोषित करने की आवश्यकता हो सकती है,<td style="background-color: ...
पक्का

@user - यहां कम से कम दो अलग-अलग मुद्दे हैं: 1) डेटा को स्वरूपित करना ताकि यह एक्सेल में सही ढंग से दिखाई दे, और 2) जावास्क्रिप्ट का उपयोग करके डेटा का निर्यात करना ताकि यह माइम-प्रकार को सही ढंग से सेट करे, उपयोगकर्ता को फ़ाइल को बचाने के लिए संकेत दे। । क्या आप इन दोनों समस्याओं को हल करने की कोशिश कर रहे हैं?
nrabinowitz

10
इसे "राय-आधारित" क्यों माना गया? यह बहुत सीधा तकनीकी प्रश्न है।
ब्रांडीज़ी

जवाबों:


75

सुदूर और दूर, टेबल से एक्सेल में सबसे साफ, सबसे आसान निर्यात Jquery DataTables तालिका उपकरण प्लगइन है। आपको एक ग्रिड मिलता है जो आपके डेटा को सॉर्ट करता है, फ़िल्टर करता है, ऑर्डर करता है, और कोड की कुछ अतिरिक्त पंक्तियों और दो छोटी फ़ाइलों को शामिल करता है, आपको क्लिपबोर्ड और प्रिंटर पर एक्सेल, पीडीएफ, सीएसवी को निर्यात मिलता है।

यह आवश्यक है कि सभी कोड है:

  $(document).ready( function () {
    $('#example').dataTable( {
        "sDom": 'T<"clear">lfrtip',
        "oTableTools": {
            "sSwfPath": "/swf/copy_cvs_xls_pdf.swf"
        }
    } );
} );

इसलिए, तैनाती के लिए त्वरित, कोई ब्राउज़र सीमाएं, कोई सर्वर-साइड भाषा की आवश्यकता नहीं है, और सभी को समझने में बहुत आसान है। यह एक जीत है। एक चीज जिसकी सीमा होती है, वह है, स्तंभों का सख्त स्वरूपण।

यदि स्वरूपण और रंग पूर्ण डीलब्रेकर हैं, तो केवल 100% विश्वसनीय, क्रॉस ब्राउज़र विधि जो मैंने पाया है वह आपके कोड से उचित एक्सेल फ़ाइलों को संसाधित करने के लिए सर्वर-साइड भाषा का उपयोग करना है। मेरी पसंद का समाधान PHPExcel है यह मैंने अभी तक पाया है कि सकारात्मक रूप से किसी भी ब्राउज़र से एक्सेल के एक आधुनिक संस्करण के लिए निर्यात के साथ निर्यात को संभालता है जब आप इसे HTML के अलावा कुछ भी नहीं देते हैं। मुझे स्पष्ट करें, हालांकि, यह निश्चित रूप से पहले समाधान के रूप में आसान नहीं है, और एक संसाधन हॉग का एक सा है। हालाँकि, प्लस साइड पर यह पीडीएफ के साथ-साथ डायरेक्ट भी आउटपुट कर सकता है। और, एक बार जब आप इसे कॉन्फ़िगर करते हैं, तो यह हर बार काम करता है।

अद्यतन - 15 सितंबर, 2016: टेबलटूल को " बटन " नामक एक नए प्लगइन के पक्ष में बंद कर दिया गया है। ये उपकरण पुराने टेबलटूल एक्सटेंशन के समान कार्य करते हैं, लेकिन एफएआर को स्थापित करना आसान है और वे आधुनिक ब्राउज़रों के लिए एचटीएमएल 5 डाउनलोड का उपयोग करते हैं, HTML5 मानक का समर्थन नहीं करने वाले ब्राउज़रों के लिए मूल फ़्लैश डाउनलोड में वापस आने की क्षमता के साथ। जैसा कि आप कई टिप्पणियों से देख सकते हैं क्योंकि मैंने 2011 में इस प्रतिक्रिया को पोस्ट किया था, टेबलटूल की मुख्य कमजोरी को संबोधित किया गया है। मैं अभी भी बड़ी मात्रा में डेटा को संभालने के लिए पर्याप्त रूप से डेटाटेबल्स की सिफारिश नहीं कर सकता, डेवलपर और उपयोगकर्ता दोनों के लिए।


2
DataTables पूरी तरह से जावास्क्रिप्ट है। बस TableTools तत्व फ्लैश का उपयोग करता है, और यह छोटा है। मैं अपने किसी भी उत्पाद में स्वेच्छा से फ्लैश का उपयोग नहीं करूंगा!
bpeterson76

16
मैं समझता हूं, और मैं सहमत हूं। लेकिन फिर भी - हालांकि माइनसक्यूल - वहाँ एक .swf वस्तु है, और यह फ़्लैश के बिना नहीं चल सकता है।
मैग्मा

8
इस तरह के एक महान समाधान, लेकिन इस तरह के एक शर्म की जरूरत है फ्लैश।
jnthnclrk

हैलो, आप एक पूर्ण उदाहरण दिखा सकते हैं, मैं उदाहरण के बिना इसे काम करने के लिए बहुत शोर कर रहा हूं!
NoobTom

1
@PramodGaikwad, नहीं, Datatables एनजी-टेबल की जगह लेगा। वे प्रभावी रूप से एक ही कार्यक्षमता हैं, लेकिन डेटाटैब एफएआर अधिक परिपक्व है और कई, कई और अधिक विशेषताएं हैं। विशेष रूप से Angular: l-lin.github.io/angular-datatables/#/welcome
bpeterson76

42

बहुत समय पहले, मुझे पता चला कि यदि हम एक्सेल सामग्री प्रकार के साथ भेजते हैं तो एक्सेल एक टेबल के साथ एक HTML फ़ाइल खोलेगा। उपरोक्त दस्तावेज पर विचार करें:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Java Friends</title>
</head>
<body>
  <table style="font-weight: bold">
    <tr style="background-color:red"><td>a</td><td>b</td></tr>
    <tr><td>1</td><td>2</td></tr>
  </table>    
</body>
</html>

मैंने उस पर निम्नलिखित बुकमार्कलेट चलाया:

javascript:window.open('data:application/vnd.ms-excel,'+document.documentElement.innerHTML);

और वास्तव में मुझे यह एक्सेल फाइल के रूप में डाउनलोड करने योग्य लगा। हालाँकि , मुझे अपेक्षित परिणाम नहीं मिला - फ़ाइल OpenOffice.org लेखक में खुली थी। यह मेरी समस्या है: मेरे पास इस मशीन में एक्सेल नहीं है इसलिए मैं इसे बेहतर तरीके से आज़मा नहीं सकता। इसके अलावा, इस ट्रिक ने पुराने ब्राउज़र और MS ऑफिस के एंटीक वर्जन के साथ छह साल पहले कम या ज्यादा काम किया था, इसलिए मैं वास्तव में यह नहीं कह सकता कि यह आज काम करेगा।

वैसे भी, ऊपर के दस्तावेज़ में मैंने एक बटन जोड़ा है जो संपूर्ण दस्तावेज़ को एक एक्सेल फ़ाइल के रूप में, सिद्धांत रूप में डाउनलोड करेगा:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Java Friends</title>
</head>
<body>
  <table style="font-weight: bold">
    <tr style="background-color:red"><td>a</td><td>b</td></tr>
    <tr><td>1</td><td>2</td></tr>
    <tr>
      <td colspan="2">
        <button onclick="window.open('data:application/vnd.ms-excel,'+document.documentElement.innerHTML);">
            Get as Excel spreadsheet
        </button>
      </td>
    </tr>
  </table>    
</body>
</html>

इसे एक फ़ाइल में सहेजें और बटन पर क्लिक करें। मुझे यह जानकर अच्छा लगेगा कि यह काम किया या नहीं, इसलिए मैं आपसे यह कहने के लिए भी टिप्पणी करने के लिए कहता हूं कि यह काम नहीं किया।


11
इसे अंत में एक जगह जोड़ने का काम किया: window.open ('डेटा: एप्लिकेशन / vnd.ms-excel,' + document.getElementById ('तालिका')। बाहरी HTML.replace (/ / g, '% 20'))। ;
वीएसपी

6
वैकल्पिक तरीका (अनुशंसित): window.open ('data: application / vnd.ms-excel,' + encodeURIComponent (document.getElementById ('table')। ExternalHTML));
वीएसपी

5
पूरी तरह से फ़ायरफ़ॉक्स में काम करता है, अपनी मेज को एक डिव में लपेटें और फिर आईडी document.getElementById('id').innerHTMLको चुनिंदा रूप से केवल टेबल को पकड़ने के लिए कॉल करें , अन्यथा आपका सारा सामान स्प्रेडशीट को निर्यात हो जाता है। पुराने IE में काम नहीं करता है, बस शीर्षक में सभी HTML के साथ एक नई विंडो खोलता है
अब्राहम ब्रूक्स

1
यह सरल समाधान बस ठीक काम करता है। फ़ाइल नाम सेट करने में सक्षम होने के लिए इस डुप्लिकेट प्रश्न को देखें, और साथ ही एक कार्य पत्रक नाम सेट करें। एक ही प्रकार का समाधान; stackoverflow.com/questions/17126453/…
एस्पेन शुलस्टेड

2
अधिक सख्त सुरक्षा उपायों के कारण यह अब Office 365 में काम नहीं करता है। एक्सेल फ़ाइल एक TRUE एक्सेल दस्तावेज़ होना चाहिए या यह खोलने पर त्रुटि फेंक देगा।
फिल

12

एक स्ट्रिंग बनाने के लिए पुराने एक्सेल 2003 एक्सएमएल प्रारूप (ओपनएक्सएमएल से पहले) का उपयोग करना संभव है जिसमें आपका वांछित एक्सएमएल है, फिर क्लाइंट पक्ष पर आप एक्सएसएल माइम प्रकार का उपयोग करके फ़ाइल को खोलने के लिए या फ़ाइल भेजने के लिए एक डेटा यूआरआई का उपयोग कर सकते हैं। एक्सेल mimetype "सामग्री-प्रकार: अनुप्रयोग / vnd.ms-excel" सर्वर साइड से क्लाइंट का उपयोग कर रहा है।

  1. एक्सेल खोलें और अपने वांछित स्वरूपण और रंगों के साथ एक वर्कशीट बनाएं।
  2. Excel कार्यपुस्तिका को "XML स्प्रेडशीट 2003 (* .xml)" के रूप में सहेजें
  3. नोटपैड जैसे पाठ संपादक में परिणामी फ़ाइल खोलें और अपने एप्लिकेशन में एक स्ट्रिंग में मान कॉपी करें
  4. मान लें कि आप डेटा पक्ष के साथ ग्राहक पक्ष दृष्टिकोण का उपयोग करते हैं तो कोड इस तरह दिखाई देगा:
    
    <script type="text/javascript">
    var worksheet_template = '<?xml version="1.0"?><ss:Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">'+
                 '<ss:Styles><ss:Style ss:ID="1"><ss:Font ss:Bold="1"/></ss:Style></ss:Styles><ss:Worksheet ss:Name="Sheet1">'+
                 '<ss:Table>{{ROWS}}</ss:Table></ss:Worksheet></ss:Workbook>';
    var row_template = '<ss:Row ss:StyleID="1"><ss:Cell><ss:Data ss:Type="String">{{name}}</ss:Data></ss:Cell></ss:Row>';
    </script>
    
    
  5. फिर आप अपने कार्यपत्रक टेम्पलेट में सम्मिलित की जाने वाली पंक्तियों का संग्रह बनाने के लिए स्ट्रिंग रिप्लेस का उपयोग कर सकते हैं
    
    <script type="text/javascript">
    var rows = document.getElementById("my-table").getElementsByTagName('tr'),
      row_data = '';
    for (var i = 0, length = rows.length; i < length; ++i) {
    row_data += row_template.replace('{{name}}', rows[i].getElementsByTagName('td')[0].innerHTML);
    }
    </script>
    
    
  6. एक बार आपके पास जानकारी एकत्र हो जाने के बाद, अंतिम स्ट्रिंग बनाएं और डेटा URI का उपयोग करके एक नई विंडो खोलें

    
    <script type="text/javascript">
    var worksheet = worksheet_template.replace('{{ROWS}}', row_data);

    window.open('data:application/vnd.ms-excel,'+worksheet); </script>

यह ध्यान देने योग्य है कि पुराने ब्राउज़र डेटा यूआरआई योजना का समर्थन नहीं करते हैं, इसलिए आपको उन ब्राउज़र के लिए फ़ाइल सर्वर साइड का उत्पादन करने की आवश्यकता हो सकती है जो इसका समर्थन नहीं करते हैं।

आपको डेटा यूआरआई सामग्री पर बेस 64 एनकोडिंग भी करने की आवश्यकता हो सकती है, जिसके लिए जेएस लाइब्रेरी की आवश्यकता हो सकती है , साथ ही स्ट्रिंग ', बेस 64' डेटा यूआरआई में माइम प्रकार के बाद।


हालाँकि OpenXML का उपयोग करना अच्छा है, लेकिन यह समाधान जावास्क्रिप्ट जनरेटर पर बहुत सारे काम के बिना कोल्सपेन्स या रोस्पैन के साथ तालिकाओं पर काम नहीं करेगा
एडुआर्डो मोल्टनी

1
एक प्लगइन का उपयोग करने के लिए मुझे बताने के बजाय मुझे कुछ सिखाने के लिए धन्यवाद, अत्यधिक सराहना की गई। यह ध्यान देने योग्य है कि यह दृष्टिकोण आज भी अच्छी तरह से काम करता है।
बेंजामिन ग्रुएनबाम

दिलचस्प है, इस दृष्टिकोण की कोशिश की। मैं अभी पूरे <xml संस्करण = "1.0"; : ID = "1"> <ss: फ़ॉन्ट ss: Bold = "1" /> </ ss: शैली> </ ss: शैलियाँ> <ss: कार्यपत्रक ss: नाम = "Sheet1"> '+' ss: तालिका> एक सेल में सभी पंक्तियों सहित, एक सेल में लिखे गए मेरे तार के साथ मूल्य। मैं क्या खो रहा हूँ?
CromeX

6

एक्सेल में एक छोटी ज्ञात विशेषता है जिसे "वेब क्वेश्चन" कहा जाता है जो आपको अतिरिक्त प्रोग्रामिंग के बिना लगभग हर वेब पेज से डेटा पुनर्प्राप्त करने देता है।

एक वेब क्वेरी मूल रूप से एक्सेल के भीतर से HTTP अनुरोध को सीधे चलाती है और वर्कशीट में कुछ या सभी प्राप्त डेटा (और वैकल्पिक रूप से स्वरूपण) की प्रतिलिपि बनाती है।

वेब क्वेरी को परिभाषित करने के बाद आप इसे बिना किसी समय के भी छोड़ सकते हैं। इसलिए आपको डेटा को वास्तव में "निर्यात" करने की ज़रूरत नहीं है और इसे एक फ़ाइल में सहेजें - आप डेटा को डेटाबेस की तरह ही ताज़ा करेंगे।

तुम भी फिल्टर मानकों आदि के लिए एक्सेल शीघ्र होने से आप URL मापदंडों का उपयोग कर सकते हैं ...

हालाँकि मैंने अभी तक जिस पर ध्यान दिया है वह हैं:

  • गतिशील रूप से लोड किया गया डेटा सुलभ नहीं है, क्योंकि जावास्क्रिप्ट निष्पादित नहीं किया गया है
  • URL की लंबाई सीमित है

यहाँ एक प्रश्न है कि एक्सेल में वेब क्वेरी कैसे बनाई जाए। यह एक वेब पेज से बाहरी डेटा प्राप्त करने के बारे में Microsoft मदद साइट से लिंक करता है


यह काम नहीं करेगा यदि url एक लॉगिन दीवार के पीछे हो।
अच्चर

यह बेसिक के साथ काम भी करता है और आधार आधारित प्रमाणीकरण भी करता है, लेकिन बाद में आपको क्रेडेंशियल्स को फिर से दर्ज करने और समय से एक नया कुकी प्राप्त करने के लिए "क्वेरी को संपादित करें" पर क्लिक करना पड़ सकता है
एचएएल 9000

5

यह एक php है, लेकिन आप शायद इसे जावास्क्रिप्ट में बदल सकते हैं:

<?php>
$colgroup = str_repeat("<col width=86>",5);
$data = "";
$time = date("M d, y g:ia");
$excel = "<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\">
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html>
<head>
<meta http-equiv=\"Content-type\" content=\"text/html;charset=utf-8\" />
<style id=\"Classeur1_16681_Styles\">
.xl4566 {
color: red;
}
</style>
</head>
<body>
<div id=\"Classeur1_16681\" align=center x:publishsource=\"Excel\">
<table x:str border=0 cellpadding=0 cellspacing=0 style=\"border-collapse: collapse\">
<colgroup>$colgroup</colgroup>
<tr><td class=xl2216681><b>Col1</b></td><td class=xl2216681><b>Col2</b></td><td class=xl2216681 ><b>Col3</b></td><td class=xl2216681 ><b>Col4</b></td><td class=xl2216681 ><b>Col5</b></td></tr>
<tr><td class=xl4566>1</td><td>2</td><td>3</td><td>4</td><td>5</td></tr>
</table>
</div>
</body>
</html>";
  $fname = "Export".time().".xls";
  $file = fopen($fname,"w+");
  fwrite($file,$excel);
  fclose($file);
  header('Content-Type: application/vnd.ms-excel');
  header('Content-Disposition: attachment; filename="'.basename($fname).'"');
  readfile($fname);
  unlink($fname); ?>    

5

सबसे पहले, मैं निर्यात करने की कोशिश नहीं करूँगा Html और आशा करता हूँ कि उपयोगकर्ता का एक्सेल इसका उदाहरण है। मेरा अनुभव है कि यह समाधान Macintosh क्लाइंट के साथ असंगति सहित समस्याओं से भरा हुआ है और उपयोगकर्ता को एक त्रुटि फेंक रहा है कि प्रश्न में फ़ाइल निर्दिष्ट प्रारूप का नहीं है। सबसे अधिक बुलेट-प्रूफ, उपयोगकर्ता के अनुकूल समाधान एक सर्वर-साइड है जहां आप एक पुस्तकालय का उपयोग करके एक वास्तविक एक्सेल फ़ाइल बनाते हैं और उपयोगकर्ता को वापस भेजते हैं। अगला सबसे अच्छा समाधान और अधिक सार्वभौमिक समाधान ओपन एक्सएमएल प्रारूप का उपयोग करना होगा। मैंने एक्सेल के पुराने संस्करणों के साथ कुछ दुर्लभ संगतता मुद्दों में भाग लिया है, लेकिन इस पर आपको एक समाधान देना चाहिए जो एक्सेल के किसी भी संस्करण पर मैक सहित काम करेगा।

XML खोलें


4

मोज़िला अभी भी आधार 64 यूआरआई का समर्थन करता है। यह आपको जावास्क्रिप्ट का उपयोग करके गतिशील रूप से द्विआधारी सामग्री की रचना करने की अनुमति देता है:

<a href="data:application/vnd.ms-excel<base64 encoded binary excel content here>"> download xls</a>

यदि आपकी एक्सेल फ़ाइल बहुत फैंसी नहीं है (कोई आरेख, सूत्र, मैक्रोज़) तो आप प्रारूप में खुदाई कर सकते हैं और अपनी फ़ाइल के लिए बाइट्स बना सकते हैं, फिर उन्हें बेस 64 के साथ एनकोड करें और href में डालें

https://developer.mozilla.org/en/data_URIs का संदर्भ लें


2

यह वास्तव में आपके द्वारा सोचने की तुलना में अधिक सरल है: क्लिपबोर्ड में "बस" एचटीएमएल टेबल (यानी: टेबल के लिए एचटीएमएल कोड) की प्रतिलिपि बनाएँ। एक्सेल को पता है कि HTML टेबल को कैसे डीकोड करना है; यह भी विशेषताओं को संरक्षित करने की कोशिश करेंगे।

जावास्क्रिप्ट से क्लिपबोर्ड तक पहुंचने का कोई मानक तरीका नहीं होने के कारण हार्ड पार्ट "क्लिपबोर्ड में तालिका की प्रतिलिपि" है। इस ब्लॉग पोस्ट को देखें: जावास्क्रिप्ट के साथ सिस्टम क्लिपबोर्ड तक पहुंच - एक पवित्र कंघी बनानेवाले की रेती?

अब आपको केवल HTML के रूप में तालिका की आवश्यकता है। मैं jQuery और html () विधि का सुझाव देता हूं ।


2

यह कोड केवल IE है इसलिए यह केवल उन स्थितियों में उपयोगी है, जब आप जानते हैं कि आपके सभी उपयोगकर्ता IE का उपयोग कर रहे होंगे (जैसे, उदाहरण के लिए, कुछ कॉर्पोरेट वातावरण में।)

<script Language="javascript">
function ExportHTMLTableToExcel()
{
   var thisTable = document.getElementById("tbl").innerHTML;
   window.clipboardData.setData("Text", thisTable);
   var objExcel = new ActiveXObject ("Excel.Application");
   objExcel.visible = true;

   var objWorkbook = objExcel.Workbooks.Add;
   var objWorksheet = objWorkbook.Worksheets(1);
   objWorksheet.Paste;
}
</script>

मैंने इस कोड का उपयोग करने की कोशिश की, इसने एक्सेल में टेबल को खोला, लेकिन सही प्रारूप नहीं दिखता है जैसे कि यह सिर्फ HTML कोड को तालिकाओं में कॉपी करता है। इस तरह: <TD class = "" bgColor = # ed9fff> SARTIN, DAN </ TD> <TD class = "" bgColor = # ed9fff> BALAEZ, BARBARA / TD> कोई सुझाव?
फहद

ऐसा इसलिए क्योंकि उसने इनर HTML का इस्तेमाल किया था। वह तत्व जो तालिका प्राप्त कर रहा है, वह बाहरी HTML होना चाहिए। मैंने संपादन किया
user1566694

ActiveXObject बनाते समय मुझे त्रुटि मिलती है: "स्वचालन सर्वर ऑब्जेक्ट नहीं बना सकता है"। मेरे द्वारा यह कैसे किया जा सकता है?
एनके एसपी

2

मान्यताओं:

  1. url दिया

  2. रूपांतरण क्लाइंट पक्ष पर किया जाना है

  3. सिस्टम विंडोज, मैक और लिनक्स हैं

विंडोज के लिए समाधान:

python कोड जो कि विंडो को खोलता है और उस तक पहुँच रखता है: theurl वैरिएबल में url ('http: //') होता है

ie = Dispatch("InternetExplorer.Application")
ie.Visible = 1
ie.Navigate(theurl)

नोट: यदि पृष्ठ सीधे पहुंच योग्य नहीं है, लेकिन लॉगिन करें, तो आपको प्रपत्र डेटा दर्ज करके और अजगर के साथ उपयोगकर्ता क्रियाओं का अनुकरण करके इसे संभालना होगा

यहाँ उदाहरण है

from win32com.client import Dispatch
ie.Document.all('username').value=usr
ie.Document.all('password').value=psw

वेब पेज से डेटा पुनर्प्राप्ति के लिए एक ही तरीका है। मान लीजिए कि 'el1' वाले तत्व में डेटा है। चर के लिए तत्व पाठ को पुनः प्राप्त करें

el1 = ie.Document.all('el1').value

तब जब डेटा अजगर चर में है, तो आप अजगर का उपयोग करके इसी तरह से एक्सेल स्क्रीन खोल सकते हैं:

from win32com.client import Dispatch
xlApp = Dispatch("Excel.Application")
xlWb = xlApp.Workbooks.Open("Read.xls")
xlSht = xlWb.WorkSheets(1)
xlSht.Cells(row, col).Value = el1

मैक के लिए समाधान:

केवल टिप: AppleScript का उपयोग करें - इसमें win32com.client डिस्पैच के रूप में सरल और समान एपीआई है

लिनक्स के लिए समाधान:

java.awt.Robot इसके लिए काम कर सकता है, इस पर क्लिक है, कुंजी प्रेस (गर्म कुंजियों का उपयोग किया जा सकता है), लेकिन लिनक्स के लिए कोई भी एपीआई जिसके बारे में मुझे जानकारी नहीं है कि यह AppleScript की तरह सरल काम कर सकता है


1

साधारण Google खोज ने इसे बदल दिया:

यदि डेटा वास्तव में एक HTML पृष्ठ है और एएसपी, पीएचपी, या किसी अन्य स्क्रिप्टिंग भाषा द्वारा नहीं बनाया गया है, और आप इंटरनेट एक्सप्लोरर 6 का उपयोग कर रहे हैं, और आपने अपने कंप्यूटर पर एक्सेल स्थापित किया है, तो बस पृष्ठ पर राइट-क्लिक करें और देखें मेनू के माध्यम से। आपको "Microsoft Excel में निर्यात करें" देखना चाहिए। यदि ये सभी शर्तें सही हैं, तो मेनू आइटम पर क्लिक करें और कुछ संकेतों के बाद इसे एक्सेल में आयात किया जाएगा।

यदि आप ऐसा नहीं कर सकते, तो वह एक वैकल्पिक "ड्रैग-एंड-ड्रॉप" विधि देता है:

http://www.mrkent.com/tools/converter/



0

इसे स्वचालित रूप से करने के लिए व्यावहारिक दो तरीके हैं जबकि केवल एक समाधान का उपयोग सभी ब्राउज़रों में किया जा सकता है। सबसे पहले आपको एक्सेल शीट बनाने के लिए ओपन xml विनिर्देशन का उपयोग करना चाहिए। Microsoft से निःशुल्क प्लगइन्स उपलब्ध हैं जो पुराने कार्यालय संस्करणों के लिए भी यह प्रारूप उपलब्ध कराते हैं। ओपन xml कार्यालय 2007 के बाद से मानक है। दो तरीके स्पष्ट रूप से सर्वराइड या क्लाइंटसाइड हैं।

क्लाइंटसाइड कार्यान्वयन सीएसएस के एक नए मानक का उपयोग करता है जो आपको डेटा के लिए केवल URL के बजाय डेटा संग्रहीत करने की अनुमति देता है। यह एक महान दृष्टिकोण है coz आप किसी भी सर्वर की जरूरत नहीं है, बस डेटा और कुछ जावास्क्रिप्ट। नकारात्मक पक्ष यह है कि Microsoft वर्तमान IE में इसके सभी हिस्सों का समर्थन नहीं करता है (मुझे IE9 के बारे में पता नहीं है) रिलीज। Microsoft छवि होने के लिए डेटा को प्रतिबंधित करता है लेकिन हमें एक दस्तावेज़ की आवश्यकता होगी। फायरफॉक्स में यह काफी ठीक काम करता है। मेरे लिए IE हत्या बिंदु था।

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


क्या डाउन मतदाता टिप्पणी कर सकता है कि डाउनवॉटिंग का कारण क्या है?
एसआरए

0
   function normalexport() {

       try {
           var i;
           var j;
           var mycell;
           var tableID = "tblInnerHTML";
           var drop = document.getElementById('<%= ddl_sections.ClientID %>');
           var objXL = new ActiveXObject("Excel.Application");
           var objWB = objXL.Workbooks.Add();
           var objWS = objWB.ActiveSheet;
           var str = filterNum(drop.options[drop.selectedIndex].text);
           objWB.worksheets("Sheet1").activate; //activate dirst worksheet
           var XlSheet = objWB.activeSheet; //activate sheet
           XlSheet.Name = str; //rename


           for (i = 0; i < document.getElementById("ctl00_ContentPlaceHolder1_1").rows.length - 1; i++) {
               for (j = 0; j < document.getElementById("ctl00_ContentPlaceHolder1_1").rows(i).cells.length; j++) {
                   mycell = document.getElementById("ctl00_ContentPlaceHolder1_1").rows(i).cells(j);

                   objWS.Cells(i + 1, j + 1).Value = mycell.innerText;

                   //                                                objWS.Cells(i + 1, j + 1).style.backgroundColor = mycell.style.backgroundColor;
               }
           }

           objWS.Range("A1", "L1").Font.Bold = true;
           //                objWS.Range("A1", "L1").Font.ColorIndex = 2;
           //                 objWS.Range("A1", "Z1").Interior.ColorIndex = 47;

           objWS.Range("A1", "Z1").EntireColumn.AutoFit();

           //objWS.Range("C1", "C1").ColumnWidth = 50;

           objXL.Visible = true;

       } catch (err) {
           alert("Error. Scripting for ActiveX might be disabled")
           return
       }
       idTmr = window.setInterval("Cleanup();", 1);

   }


   function filterNum(str) {

       return str.replace(/[ / ]/g, '');
   }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.