ওয়েব পৃষ্ঠাগুলি থেকে কীভাবে আমি এক্সলে টেবিলগুলি রফতানি করতে পারি [বন্ধ]


97

আমি কীভাবে ওয়েবপৃষ্ঠা থেকে এক্সলে টেবিলগুলি রফতানি করতে পারি। আমি চাই রফতানিতে সমস্ত বিন্যাস এবং রং থাকতে পারে।


9
সবচেয়ে সহজ উপায় হ'ল এইচটিএমএল নথি রফতানি করা, যা এক্সেল খুলতে পারে।
পেক্কা

@ পেপকা আমি চেষ্টা করেছি, এটি সমস্ত ফর্ম্যাটিং / সিএসএস / কলামের আকার ইত্যাদি হারিয়ে
ফেলেছে

4
@ ব্যবহারকারী আপনি কলামের আকার এবং এ জাতীয় ঘোষণা করছেন? আমি এক্সেলের কাছে ডেটা রফতানি করার সাথে গভীরভাবে পরিচিত নই তবে আপনাকে সেগুলি ইনলাইন ঘোষণার প্রয়োজন হতে পারে<td style="background-color: ...
পেক্কা

@ ব্যবহারকারীর - এখানে কমপক্ষে দুটি ভিন্ন সমস্যা রয়েছে: 1) ডেটা ফর্ম্যাট করা যাতে এটি এক্সলে সঠিকভাবে উপস্থিত হয় এবং 2) জাভাস্ক্রিপ্ট ব্যবহার করে ডেটা রফতানি করা যাতে এটি মাইম-টাইপটি সঠিকভাবে সেট করে, ব্যবহারকারীকে ফাইলটি সংরক্ষণ করার অনুরোধ জানায় । আপনি কি এই দুটি সমস্যা সমাধানের চেষ্টা করছেন?
nrabinowitz

10
কেন এটিকে "মতামত ভিত্তিক" বিবেচনা করা হয়েছিল? এটি একটি খুব সহজ প্রযুক্তিগত প্রশ্ন।
ব্র্যান্ডজিজি

উত্তর:


75

টেবিলগুলি থেকে এক্সেলের কাছে পরিষ্কার এবং সহজ রফতানি হ'ল জ্যাকারি ডেটাবেবলস সারণী সরঞ্জাম প্লাগইন। আপনি একটি গ্রিড পাবেন যা আপনার ডেটা বাছাই করে, ফিল্টার করে, অর্ডার করে এবং পৃষ্ঠাগুলি দেয় এবং কোডের কয়েকটি অতিরিক্ত লাইন এবং দুটি ছোট ফাইল অন্তর্ভুক্ত করে আপনি এক্সেল, পিডিএফ, সিএসভি, ক্লিপবোর্ডে এবং প্রিন্টারে রফতানি পেতে পারেন।

এটি প্রয়োজনীয় সমস্ত কোড:

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

সুতরাং, দ্রুত মোতায়েন করা, কোনও ব্রাউজারের সীমাবদ্ধতা, কোনও সার্ভার-সাইড ল্যাঙ্গুয়েজের প্রয়োজন নেই এবং বেশিরভাগই খুব সহজেই বুঝতে। এটি একটি জয়-জয়। এটির একটিতে সীমাবদ্ধতা রয়েছে তবে এটি কলামের কঠোর বিন্যাস।

যদি ফর্ম্যাটিং এবং রঙগুলি নিখুঁত ডিলব্রেকার হয় তবে আমি খুঁজে পেয়েছি শুধুমাত্র 100% নির্ভরযোগ্য, ক্রস ব্রাউজার পদ্ধতিটি আপনার কোড থেকে সঠিক এক্সেল ফাইলগুলি প্রক্রিয়াকরণের জন্য একটি সার্ভার-সাইড ভাষা ব্যবহার করা language আমার পছন্দের সমাধানটি হ'ল পিএইপপিএক্সসেল এটি এখন পর্যন্ত আমি খুঁজে পেয়েছি যে কোনও ব্রাউজার থেকে এক্সেল এর একটি আধুনিক সংস্করণে ফর্ম্যাট করার সাথে রফতানিটি ইতিবাচকভাবে পরিচালনা করে যখন আপনি এটিকে এইচটিএমএল ব্যতীত আর কিছু দেন না। যদিও আমি স্পষ্ট করে বলি, এটি অবশ্যই প্রথম সমাধানের মতো সহজ নয়, এবং এটি একটি রিসোর্স হগও। তবে প্লাস দিকে এটি পিডিএফ-তে সরাসরি আউটপুটও করতে পারে। এবং একবার আপনি এটি কনফিগার করা হয়ে গেলে, এটি প্রতিটি সময় ঠিক কাজ করে।

আপডেট - 15 সেপ্টেম্বর, 2016: টেবিলটুলগুলি " বোতাম " নামে একটি নতুন প্লাগইনের পক্ষে বন্ধ করা হয়েছে এই সরঞ্জামগুলি পুরানো টেবিলটুলগুলি এক্সটেনশনের মতো একই ফাংশন সম্পাদন করে তবে এটি ইনস্টল করা খুব সহজ এবং তারা আধুনিক ব্রাউজারগুলির জন্য এইচটিএমএল 5 ডাউনলোডগুলি ব্যবহার করে, HTML5 স্ট্যান্ডার্ড সমর্থন করে না এমন ব্রাউজারগুলির জন্য মূল ফ্ল্যাশ ডাউনলোডে ফ্যালব্যাকের ক্ষমতা সহ with ২০১১ সালে আমি এই প্রতিক্রিয়াটি পোস্ট করার পর থেকে আপনি প্রচুর মন্তব্য থেকে দেখতে পাচ্ছেন, টেবিলটুলগুলির মূল দুর্বলতা সমাধান করা হয়েছে। বিকাশকারী এবং ব্যবহারকারী উভয়ের জন্যই কেবলমাত্র প্রচুর পরিমাণে ডেটা হ্যান্ডল করার জন্য আমি যথেষ্ট পরিমাণে ডেটা টেবিলগুলি সুপারিশ করতে পারি না।


4
ডেটা টেবিলগুলি সম্পূর্ণ জাভাস্ক্রিপ্ট। কেবল টেবিলটুলস উপাদান ফ্ল্যাশ ব্যবহার করে এবং এটি ক্ষুদ্র। আমি আমার যে কোনও পণ্যতে স্বেচ্ছায় ফ্ল্যাশ ব্যবহার করব না!
বিপিটারসন 76

16
আমি বুঝতে পেরেছি, এবং আমি একমত। তবে এখনও - তবে বিয়োগ - সেখানে একটি .swf অবজেক্ট রয়েছে এবং এটি ফ্ল্যাশ ছাড়া চলতে পারে না।
ম্যাগমা

8
এ জাতীয় দুর্দান্ত সমাধান, তবে এর জন্য লজ্জার জন্য এটি ফ্ল্যাশ দরকার।
jnthnclrk

হ্যালো আপনি কি একটি সম্পূর্ণ উদাহরণ দেখাতে পারেন, আমি উদাহরণ ছাড়াই এটিকে কাজ করতে খুব বুদ্ধিমান!
NoobTom

4
@ প্রমোদগাইকওয়াদ, না, ডেটাবেবলগুলি এনজি-টেবিলটি প্রতিস্থাপন করবে। এগুলি কার্যকরভাবে একই কার্যকারিতা, তবে ডেটাবেবলগুলি আরও বেশি পরিপক্ক এবং এর আরও অনেকগুলি বৈশিষ্ট্য রয়েছে। বিশেষভাবে কৌণিকের জন্য তৈরি ডেটাবেলের একটি স্পিন অফ রয়েছে: l-lin.github.io/angular-datatables/#/welcome
bpeterson76

42

অনেক দিন আগে, আমি আবিষ্কার করেছি যে এক্সেল কোনও টেবিল সহ একটি এইচটিএমএল ফাইল খুলবে যদি আমরা এটি এক্সেল সামগ্রী প্রকারের সাথে প্রেরণ করি। উপরের নথিটি বিবেচনা করুন:

<!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);

এবং আসলে আমি এটি এক্সেল ফাইল হিসাবে ডাউনলোডযোগ্য পেয়েছি। যাইহোক , আমি প্রত্যাশিত ফলাফলটি পাইনি - ফাইলটি ওপেনঅফিস.আরগ লেখকটিতে খোলা ছিল। এটি আমার সমস্যা: আমার কাছে এই মেশিনে এক্সেল নেই তাই আমি আরও ভাল করে চেষ্টা করতে পারি না। এছাড়াও, এই কৌশলটি ছয় বছর আগে পুরানো ব্রাউজারগুলি এবং এমএস অফিসের একটি প্রাচীন সংস্করণ দিয়ে কাজ করেছিল, তাই আমি আজ বলতে পারি না যে এটি আজ কাজ করবে কিনা।

যাইহোক, উপরের নথিতে আমি একটি বোতাম যুক্ত করেছি যা পুরো ডকুমেন্টটিকে একটি এক্সেল ফাইল হিসাবে ডাউনলোড করবে তত্ত্বের সাথে:

<!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
এটি শেষের দিকে একটি প্রতিস্থাপন যোগ করে এটি তৈরি করে তোলে: উইন্ডো.ওপেন ('ডেটা: অ্যাপ্লিকেশন / vnd.ms-Excel,' + ডকুমেন্ট.সেটমেন্টবেইআইডি ('টেবিল')। আউটআর এইচটিএমএল.রেপ্লেস (/ / জি, '% 20')) ;
ভিএসপি

6
বিকল্প উপায় (প্রস্তাবিত): উইন্ডো.ওপেন ('ডেটা: অ্যাপ্লিকেশন / vnd.ms-Excel,' + এনকোডেরিউআরকিউম্পোনেন্ট (ডকুমেন্ট.জেটএলমেন্টবিআইআইডি ('টেবিল')। আউটআর এইচটিএমএল));
ভিএসপি

5
ফায়ারফক্সে পুরোপুরি কাজ করে, আপনার টেবিলটি একটি ডিভের মধ্যে মুড়ে রাখুন এবং তারপরে document.getElementById('id').innerHTMLকেবলমাত্র টেবিলটি বেছে বেছে ধরার জন্য আইডি কল করুন , অন্যথায় আপনার সমস্ত জিনিস স্প্রেডশিটে রফতানি হয়ে যায়। যদিও পুরানো IE তে কাজ করে না, কেবল শিরোনামের সমস্ত এইচটিএমএল সহ একটি নতুন উইন্ডো খোলে
আব্রাহাম ব্রুকস

4
এই সহজ সমাধানটি ঠিক কাজ করে। ফাইলের নাম সেট করতে সক্ষম হয়ে ও একটি কাজের শিটের নামও সেট করতে যাতে এই সদৃশ প্রশ্নটি দেখুন। একই ধরণের সমাধান; stackoverflow.com/questions/17126453/...
Espen Schulstad

4
আরও কঠোর সুরক্ষা ব্যবস্থার কারণে এটি অফিস 365 এ আর কাজ করে না। এক্সেল ফাইলটি অবশ্যই একটি সত্যই এক্সেল ডকুমেন্ট হতে হবে বা এটি খোলার সময় ত্রুটি ছুঁড়ে ফেলবে।
ফিল

12

আপনার পছন্দসই এক্সএমএল যুক্ত স্ট্রিং তৈরি করতে পুরানো এক্সেল 2003 এক্সএমএল ফর্ম্যাটটি (ওপেনএক্সএমএল এর আগে) ব্যবহার করা সম্ভব , ক্লায়েন্টের পাশে আপনি এক্সএসএল মাইম প্রকারটি ব্যবহার করে ফাইলটি খোলার জন্য একটি ডেটা ইউআরআই ব্যবহার করতে পারেন, বা ফাইলটি প্রেরণ করতে পারবেন সার্ভার দিক থেকে এক্সেল মাইমটাইপ "কন্টেন্ট-টাইপ: অ্যাপ্লিকেশন / vnd.ms-Excel" ব্যবহার করে ক্লায়েন্টের কাছে।

  1. এক্সেল খুলুন এবং আপনার পছন্দসই বিন্যাস এবং রঙগুলি সহ একটি কার্যপত্রক তৈরি করুন।
  2. এক্সেল ওয়ার্কবুকটি "এক্সএমএল স্প্রেডশিট 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. আপনার তথ্য সংগ্রহের পরে, চূড়ান্ত স্ট্রিং তৈরি করুন এবং ইউআরআই ডেটা ব্যবহার করে একটি নতুন উইন্ডো খুলুন

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

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

এটি লক্ষণীয় যে পুরানো ব্রাউজারগুলি ডেটা ইউআরআই স্কিম সমর্থন করে না, সুতরাং আপনাকে সেই ব্রাউজারগুলির জন্য ফাইল সার্ভার সাইড তৈরি করতে হবে যা এটি সমর্থন করে না।

আপনাকে ডেটা ইউআরআই সামগ্রীতে বেস 64 এনকোডিংও করতে হতে পারে, যার জন্য জেএস লাইব্রেরির প্রয়োজন হতে পারে , পাশাপাশি ডাটা ইউআরআইতে মাইম টাইপের পরে স্ট্রিং '; বেস 64' যুক্ত করতে পারে।


যদিও ওপেনএক্সএমএলটি ব্যবহার করা খুব ভাল, তবে এই সমাধানটি জাভাস্ক্রিপ্ট জেনারেটরে খুব বেশি কাজ ছাড়াই কলস্প্যান বা সারিস্প্যান দিয়ে টেবিলগুলিতে কাজ করবে না
এডুয়ার্ডো মোল্টেনি

4
অত্যন্ত প্রশংসিত একটি প্লাগইন ব্যবহার করতে বলার চেয়ে আমাকে কিছু শেখানোর জন্য ধন্যবাদ। এটি উল্লেখ করার মতো যে এই পদ্ধতিটি আজও দুর্দান্তভাবে কাজ করে।
বেনিয়ামিন গ্রুইনবাউম

আকর্ষণীয়, এই পদ্ধতির চেষ্টা। আমি কেবল পুরো <? এক্সএমএল সংস্করণ = "1.0"?> <এসএস: ওয়ার্কবুক xMLns: ss = "urn: স্কিমাস-মাইক্রোসফট-কম: অফিস: স্প্রেডশিট"> '+' <এসএস: স্টাইলস> <এসএস: স্টাইল এসএস : ID = "1"> <ss: হরফ এসএস: বোল্ড = "1" /> </ ss: শৈলী> </ ss: শৈলী> <ss: কার্যপত্রক এসএস: নাম = "শিট 1"> '+' <এসএস: সারণী> আমার ঘরে একটি কক্ষে সমস্ত সারি সহ একটি কক্ষে লিখিত স্ট্রিং সহ মানগুলি। আমি কী মিস করছি?
ক্রোমএক্স

6

এক্সেলের একটি সামান্য পরিচিত বৈশিষ্ট্য রয়েছে যা "ওয়েব ক্যোয়ারী" নামে পরিচিত যা আপনাকে অতিরিক্ত প্রোগ্রামিং ছাড়াই প্রায় প্রতিটি ওয়েব পৃষ্ঠা থেকে ডেটা পুনরুদ্ধার করতে দেয়।

একটি ওয়েব ক্যোয়ারী মূলত এক্সেলের মধ্যে থেকে সরাসরি একটি এইচটিটিপি অনুরোধ চালায় এবং প্রাপ্ত কিছু বা সমস্ত প্রাপ্ত ডেটা (এবং optionচ্ছিকভাবে ফর্ম্যাটিং) ওয়ার্কশিটে অনুলিপি করে।

আপনি ওয়েব ক্যোয়ারী সংজ্ঞায়িত করার পরে আপনি এটি এক্সেল ছাড়াই যে কোনও সময় তাজা করতে পারেন। সুতরাং আপনাকে আসলে "রফতানি" করতে হবে না এবং এটি কোনও ফাইলে সংরক্ষণ করতে হবে - আপনি বরং ডেটাবেস থেকে ডেটা রিফ্রেশ করবেন।

এমনকি আপনি নির্দিষ্ট ফিল্টারের মানদণ্ড ইত্যাদির জন্য আপনাকে এক্সেল প্রম্পট করে URL প্যারামিটারগুলি ব্যবহার করতে পারেন ...

তবে আমি এখনও অবধি লক্ষ্য করেছি:

  • গতিশীলভাবে লোড করা ডেটা অ্যাক্সেসযোগ্য নয়, কারণ জাভাস্ক্রিপ্ট কার্যকর হয় নি
  • ইউআরএল দৈর্ঘ্য সীমিত

এক্সেলে কীভাবে ওয়েব কোয়েরি তৈরি করা যায় সে সম্পর্কে এখানে একটি প্রশ্ন is এটি কোনও ওয়েব পৃষ্ঠা থেকে বাহ্যিক ডেটা কীভাবে পাবেন সে সম্পর্কে একটি মাইক্রোসফ্ট সহায়তা সাইটের সাথে লিঙ্ক করে


ইউআরএল যদি লগইন দেয়ালের পিছনে থাকে তবে এটি কাজ করবে না।
আছছার

এটি বেসিক এবং ভিত্তিক প্রমাণীকরণের সাথেও কাজ করে তবে পরবর্তীতে আপনাকে শংসাপত্রগুলি পুনরায় প্রবেশের জন্য "সম্পাদনা ক্যোয়ারী" এ ক্লিক করতে হবে এবং সময় সময় থেকে একটি নতুন কুকি পেতে হবে
HAL 9000

5

এটি একটি পিএইচপি তবে আপনি এটি জাভাস্ক্রিপ্টে পরিবর্তন করতে সক্ষম হতে পারেন:

<?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

প্রথম, আমি চাই এইচটিএমএল রফতানি করার চেষ্টা করার পরামর্শ না এবং আশা করি যে এক্সেলের ব্যবহারকারীর উদাহরণটি এটি গ্রহণ করবে। আমার অভিজ্ঞতা যে এই সমাধানটি ম্যাকিনটোস ক্লায়েন্টগুলির সাথে অসম্পূর্ণতা এবং ব্যবহারকারীকে একটি ত্রুটি ছুঁড়ে দেওয়ার মতো সমস্যায় ভরা যা প্রশ্নে থাকা ফাইলটি নির্দিষ্ট ফর্ম্যাটের নয়। সর্বাধিক বুলেট-প্রুফ, ব্যবহারকারী-বান্ধব সমাধানটি একটি সার্ভার-সাইড হ'ল যেখানে আপনি একটি আসল এক্সেল ফাইল তৈরি করতে লাইব্রেরি ব্যবহার করেন এবং এটি ব্যবহারকারীকে ফেরত পাঠান। পরবর্তী সেরা সমাধান এবং আরও সার্বজনীন সমাধান হ'ল ওপেন এক্সএমএল ফর্ম্যাটটি ব্যবহার করা। আমি এক্সেলের পুরানো সংস্করণগুলির সাথে কয়েকটি দুর্লভ সামঞ্জস্যতা সমস্যার সমাধান করেছি তবে সামগ্রিকভাবে এটি আপনাকে এমন একটি সমাধান দেবে যা ম্যাক্স সহ এক্সেলের কোনও সংস্করণে কাজ করবে।

এক্সএমএল খুলুন


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

এটি আসলে আপনি যা ভাবেন তার চেয়ে আরও সহজ: "জাস্ট" এইচটিএমএল টেবিলটি কপি করুন (এটি: টেবিলের জন্য এইচটিএমএল কোড) ক্লিপবোর্ডে অনুলিপি করুন। এক্সেল এইচটিএমএল টেবিলগুলি কীভাবে ডিকোড করতে হয় তা জানে; এটি এমনকি বৈশিষ্ট্যগুলি সংরক্ষণ করার চেষ্টা করবে।

শক্ত অংশটি হ'ল ক্লিপবোর্ডে টেবিলটি অনুলিপি করুন "যেহেতু জাভাস্ক্রিপ্ট থেকে ক্লিপবোর্ড অ্যাক্সেসের কোনও আদর্শ উপায় নেই। এই ব্লগ পোস্টটি দেখুন: জাভাস্ক্রিপ্ট সহ সিস্টেম ক্লিপবোর্ড অ্যাক্সেস করা - একটি পবিত্র গ্রিল?

এখন আপনার যা দরকার তা হ'ল এইচটিএমএল হিসাবে সারণী। আমি jQuery এবং এইচটিএমএল () পদ্ধতি প্রস্তাব করি।


2

এই কোডটি কেবলমাত্র আইই তাই এটি কেবল তখনই কার্যকর যখন আপনি জানেন যে আপনার সমস্ত ব্যবহারকারী 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>

আমি এই কোডটি ব্যবহার করে চেষ্টা করেছি এটি এক্সেলে টেবিলটি খুলতে পারে তবে সঠিক ফর্ম্যাটটি দেখে মনে হয় না যে এটি এইচটিএমএল কোডটি কেবল টেবিলগুলিতে অনুলিপি করেছে। এটির মতো: <টিডি শ্রেণি = "" বিজিকলার = # এডি 9 এসএফএফ> সার্টিন, ড্যান </ translation> <টিডি শ্রেণি = "" বিজি কলর = # এডি9 এসএফএফ> বালাইজ, বারবার </ বি>> কোনও পরামর্শ?
ফাহাদ

কারণ তিনি ইনারএইচটিএমএল ব্যবহার করেছেন। তিনি যে উপাদানটি পেয়ে চলেছেন তা হ'ল টেবিল, সুতরাং এটি বাইরের এইচটিএমএল হওয়া উচিত। আমি সম্পাদনাটি করেছি
ব্যবহারকারীর 1566694

আমি ত্রুটিটি পেয়েছি: অ্যাক্টিভক্সবজেক্ট তৈরি করার সময় "অটোমেশন সার্ভার অবজেক্ট তৈরি করতে পারে না"। আমি কীভাবে এটি ঠিক করতে পারি?
এনপি এসপি

2

অনুমান:

  1. প্রদত্ত ইউআরএল

  2. রূপান্তরটি ক্লায়েন্ট পক্ষেই করতে হবে

  3. সিস্টেমগুলি হ'ল উইন্ডোজ, ম্যাক এবং লিনাক্স

উইন্ডোজ জন্য সমাধান:

পাইথন কোড যা ie উইন্ডোটি খুলবে এবং এতে অ্যাক্সেস রয়েছে: থেরাল ভেরিয়েবলটিতে ইউআরএল রয়েছে ('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

ওয়েব পৃষ্ঠা থেকে ডেটা পুনরুদ্ধারের জন্য একই পদ্ধতি। ধরা যাক আইডি 'এল 1' সহ উপাদানটিতে ডেটা রয়েছে। ভেরিয়েবলটিতে উপাদান পাঠ্য পুনরুদ্ধার করুন

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

ম্যাকের জন্য সমাধান:

কেবলমাত্র টিপ: অ্যাপলস্ক্রিপ্টটি ব্যবহার করুন - এতে উইন 32 কমপিএলেন্ট ডিসপ্যাচ হিসাবে সহজ এবং অনুরূপ এপিআই রয়েছে

লিনাক্সের জন্য সমাধান:

java.awt.Robot এর জন্য এটি ক্লিক করতে পারে, কী টিপুন (হট কীগুলি ব্যবহার করা যেতে পারে) কাজ করতে পারে, তবে আমি যে লিনাক্স সম্পর্কে সচেতন তা অ্যাপলস্ক্রিপ্টের মতো সহজ কাজ করতে পারে


1

সরল গুগল অনুসন্ধান এটিকে চালু করেছে:

যদি ডেটাটি আসলে একটি এইচটিএমএল পৃষ্ঠা হয় এবং এটিএসপি, পিএইচপি, বা অন্য কোনও স্ক্রিপ্টিং ভাষা দ্বারা তৈরি না করা হয় এবং আপনি ইন্টারনেট এক্সপ্লোরার 6 ব্যবহার করেন এবং আপনার কম্পিউটারে এক্সেল ইনস্টল করা থাকে তবে কেবল পৃষ্ঠায় ডান ক্লিক করুন এবং দেখুন মেনু মাধ্যমে। আপনার উচিত "মাইক্রোসফ্ট এক্সেলে এক্সপোর্ট" দেখতে হবে। যদি এই সমস্ত শর্তটি সত্য হয় তবে মেনু আইটেমটিতে ক্লিক করুন এবং কয়েকটি অনুরোধের পরে এটি এক্সেলে আমদানি করা হবে।

যদি আপনি এটি করতে না পারেন তবে তিনি একটি বিকল্প "টেনে আনুন এবং ছাড়ুন" পদ্ধতিটি দেন:

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


1

এবং এখন আরও একটি ভাল উপায় আছে।

জাভাস্ক্রিপ্টের জন্য ওপেনএক্সএমএল এসডিকে।

https://openxmlsdkjs.codeplex.com/


হুঁ, ডাউনলোড এবং সর্বশেষ ক্রোমে উদাহরণগুলি চালনার চেষ্টা করে, কেবল ত্রুটি পেয়েছে :(
জোশ ম্যাক

0

এটি স্বয়ংক্রিয়ভাবে করার জন্য ব্যবহারিক দুটি উপায় রয়েছে যখন সমস্ত ব্রাউজারে কেবলমাত্র একটি সমাধান ব্যবহার করা যায়। এক্সেল শীটটি তৈরি করতে আপনার প্রথমে ওপেন এক্সএমএল স্পেসিফিকেশন ব্যবহার করা উচিত। মাইক্রোসফ্ট থেকে বিনামূল্যে প্লাগইন উপলব্ধ রয়েছে যা পুরানো অফিস সংস্করণগুলির জন্যও এই ফর্ম্যাটটি উপলব্ধ করে। ওপেন এক্সএমএল 2007 সাল থেকে কার্যকরী। দুটি উপায় স্পষ্টতই সার্ভারসাইড বা ক্লায়েন্টসাইট।

ক্লায়েন্টসাইড বাস্তবায়ন সিএসএসের একটি নতুন মান ব্যবহার করে যা আপনাকে কেবলমাত্র ডেটাতে URL টির পরিবর্তে ডেটা সংরক্ষণ করতে দেয়। এটি আপনার কাছে কোনও সার্ভারক্যাল প্রয়োজন নেই, কেবলমাত্র ডেটা এবং কিছু জাভাস্ক্রিপ্ট দরকার a হত্যার বিপর্যয় হ'ল মাইক্রোসফ্ট বর্তমান আইই (আইই 9 সম্পর্কে জানি না) রিলিজে এর সমস্ত অংশ সমর্থন করে না। মাইক্রোসফ্ট ডেটা একটি চিত্র হতে সীমাবদ্ধ করে তবে আমাদের একটি নথির প্রয়োজন হবে। ফায়ারফক্সে এটি বেশ সূক্ষ্মভাবে কাজ করে। আমার জন্য আইই হত্যার পয়েন্ট।

অন্য উপায়টি হ'ল সার্ভারসাইড বাস্তবায়ন ব্যবহারকারী। সমস্ত ভাষার জন্য ওপেন এক্সএমএল প্রচুর বাস্তবায়ন হওয়া উচিত। আপনার কেবল একটি আঁকতে হবে। বেশিরভাগ ক্ষেত্রেই কোনও দস্তাবেজের ফলস্বরূপ কোনও ভিউমডেলকে সংশোধন করার সহজতম উপায় তবে নিশ্চিতভাবে আপনি ক্লায়েন্টাইড থেকে সমস্ত ডেটা সার্ভারে ফেরত পাঠাতে পারেন এবং একই কাজ করতে পারেন।


ডাউন-ভোটাররা কীভাবে কম ভোট দেওয়ার কারণ বলে মন্তব্য করতে পারেন?
শ্ররা 4'12

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, '');
   }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.