এক্সেল থেকে কোনও ওয়েব পৃষ্ঠায় অনুলিপি / আটকান


89

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


আপনি কি কিছু স্বয়ংক্রিয় করার চেষ্টা করছেন? আপনি আরও ভাল উদাহরণ দিতে পারেন ...
ডেটন ব্রাউন

4
আমি এই প্রশ্ন জিজ্ঞাসা করতে ভয় পেলাম। এটি করার জন্য এবং এত সংক্ষিপ্ত হওয়ার জন্য আপনাকে ধন্যবাদ। :)
নস্টালজ.ইও

উত্তর:


94

আপনি ডিলিমিটারগুলি হারাবেন না, কক্ষগুলি ট্যাবগুলি দ্বারা পৃথক করা হবে ( \t) এবং সারিগুলি নিউলাইনগুলি ( \n) দ্বারা ফর্মের মধ্যে দৃশ্যমান নাও হতে পারে। এটি নিজে চেষ্টা করে দেখুন: এক্সেল থেকে নোটপ্যাডে অনুলিপি করুন এবং আপনি আপনার ঘরগুলি সুন্দরভাবে রেখাযুক্ত দেখতে পাবেন। ক্ষেত্রগুলিকে ট্যাবগুলি দ্বারা বিভক্ত করা এবং অন্য কোনও কিছু দিয়ে তাদের প্রতিস্থাপন করা সহজ, এইভাবে আপনি সেগুলি থেকে একটি টেবিলও তৈরি করতে পারেন। এখানে jQuery ব্যবহার করে একটি উদাহরণ দেওয়া হয়েছে:

var data = $('input[name=excel_data]').val();
var rows = data.split("\n");

var table = $('<table />');

for(var y in rows) {
    var cells = rows[y].split("\t");
    var row = $('<tr />');
    for(var x in cells) {
        row.append('<td>'+cells[x]+'</td>');
    }
    table.append(row);
}

// Insert into DOM
$('#excel_table').html(table);

সুতরাং সংক্ষেপে, এই স্ক্রিপ্টটি আটকানো এক্সেল ডেটা থেকে একটি HTML টেবিল তৈরি করে।


9
আমি প্রায় একই ধরণের সমস্যা নিয়ে খেলছি, এটি লক্ষ্য করার মতো, একটি পাঠ্যবাক্সে আটকানো, আপনি নিউলাইনগুলি আলগা করে। কোনও পাঠ্য অঞ্চলে আটকানোর সময় আপনি সেগুলি রাখেন।
wobbily_col 10

ব্যবহারিক কারণে, আপনি এই উত্তরটি ভবিষ্যতের ব্যবহারের জন্য স্নিপেট তৈরি করতে পারেন।
অ্যাড্রিয়ানোআরআর

4
কোনও ঘরে কোনও নতুন-লাইন থাকলে তা ভেঙে যায়।
th3byrdm4n

এটির জন্য একটি দ্রুত নোট - দুর্দান্তভাবে কাজ করে তবে ডেটা অনুলিপি করা হলে এক্সেল একটি পিছনের সারি যুক্ত করে যাতে আপনি খালি খালি শেষ করেন td। মাত্র এফওয়াইআই
jg2703

এটি একটি দ্রুত তবে স্বল্পমেয়াদী সমাধান, আমার কোনও কোষের মধ্যে \ n থাকলে কী হবে
মেভিমালকুমার

27

তাতুর উত্তরের জবাবে আমি তার সমাধানটি প্রদর্শনের জন্য একটি দ্রুত জেএসফিডাল তৈরি করেছি:

http://jsfiddle.net/duwood/sTX7y/

এইচটিএমএল

<p>Paste excel data here:</p>  
<textarea name="excel_data" style="width:250px;height:150px;"></textarea><br>
<input type="button" onclick="javascript:generateTable()" value="Genereate Table"/>
<br><br>
    <p>Table data will appear below</p>
<hr>
<div id="excel_table"></div>

জেএস

function generateTable() {
    var data = $('textarea[name=excel_data]').val();
    console.log(data);
    var rows = data.split("\n");

    var table = $('<table />');

    for(var y in rows) {
    var cells = rows[y].split("\t");
    var row = $('<tr />');
    for(var x in cells) {
        row.append('<td>'+cells[x]+'</td>');
    }
    table.append(row);
}

// Insert into DOM
$('#excel_table').html(table);
}

4
এবং এখানে এই উত্তরে আমার সংযোজন রয়েছে, তবে সরাসরি আটকানো ইভেন্টে স্বয়ংক্রিয় টেবিলটি প্রদর্শন করে: jsfiddle.net/sTX7y/690 মূলত, এটি 'আফটারপাস্ট' ইভেন্টটির অনুকরণ করে।
ইউজারফিউজার 0

12

উপর ওএসএক্স এবং উইন্ডোজ , সেখানে বিভিন্ন প্রকারের সামগ্রী জন্য clipboards একাধিক ধরনের হয়। আপনি যখন এক্সেলে সামগ্রী অনুলিপি করেন, ডেটা প্লেইন টেক্সট এবং এইচটিএমএল ক্লিপবোর্ডে সংরক্ষণ করা হয়।

সঠিক উপায় (যা ডিলিমিটার ইস্যুতে বিভক্ত হয় না) হ'ল এইচটিএমএলকে পার্স করা। http://jsbin.com/uwuvan/5 একটি সাধারণ ডেমো যা এইচটিএমএল ক্লিপবোর্ড কীভাবে পাবেন তা দেখায়। কীটি হ'ল অনপেষ্ট ইভেন্টে আবদ্ধ হয়ে পড়া

event.clipboardData.getData('text/html')

Jsbin আমার জন্য প্রত্যাশার মতো কাজ করে নি (ফায়ারফক্স 42 উইন 7, এক্সেল 2013 এ)। আপনি এই উত্তর পোস্ট করার পরে কি গুরুত্বপূর্ণ কিছু পরিবর্তন হয়েছে, যা এই পদ্ধতির আর কাজ করে না? ব্রাউজার কনসোলে আমি পাঠ্য / প্লেইন সামগ্রী লগড দেখতে পাচ্ছি, তবে পাঠ্য / এইচটিএমএল সামগ্রী ফাঁকা আছে।
খ্রিস্টান সেমরাউ

এটি এক্সেল সহ উইন্ডোগুলিতে বা লিব্রেঅফিসের সাথে উবুন্টুতে ক্রোমের সাথে কাজ করে। সেরা সমাধান আইএমও, যেহেতু এটি সমস্ত পত্রকটি মূল শিটগুলি থেকে রাখে।
বিআইআইবি

এটি বেশ প্রাসঙ্গিক উত্তর তবে আরও বিশদ বিবরণ প্রয়োজন
মেভিমালকুমার

8

তাতুর মতো একই ধারণা (ধন্যবাদ আমাদের প্রকল্পে শীঘ্রই এটির দরকার হবে), তবে নিয়মিত প্রকাশের সাথে।
যা বড় ডেটাসেটের জন্য দ্রুত হতে পারে।

<html>
<head>
    <title>excelToTable</title>
    <script src="../libs/jquery.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
    <textarea>a1    a2  a3
b1  b2  b3</textarea>
    <div></div>
    <input type="button" onclick="convert()" value="convert"/>
    <script>
        function convert(){
            var xl = $('textarea').val();
            $('div').html( 
                '<table><tr><td>' + 
                xl.replace(/\n+$/i, '').replace(/\n/g, '</tr><tr><td>').replace(/\t/g, '</td><td>') + 
                '</tr></table>'
            )
        }
    </script>
</body>
</html>

হাই মাইক, এটি দুর্দান্ত কোড! আমি কীভাবে এই টেবিল রূপান্তরটিকে একটি জমা দেওয়ার ফর্মে রূপান্তর করতে পারি সে সম্পর্কে আপনার কোনও অন্তর্দৃষ্টি আছে?
বিভিলবালেট

এটি আপনি যে ফর্মটি জমা দিতে চান তার উপর নির্ভর করে। আমি এটির বাইরে একটি স্ট্রিংফাইড জেসন তৈরি করব এবং এটি একক ক্ষেত্র হিসাবে সার্ভারে পোস্ট করব।
মাইক

যাইহোক, এটি একটি ওয়ার্ড টেবিলের জন্যও কাজ করে (আমার ব্যবহারকারীদের অন্যতম উত্তরাধিকার "রূপ" যা আমরা রূপান্তরিত করার চেষ্টা করছি)। ধন্যবাদ
হিউ সিগ্রাভস

5

আমার মতো এখানে আগত কোনও গুগলারের জন্য, আমি @ তাতু উলমানেনের ধারণাটি ব্যবহার করেছি এবং এটিকে কেবলমাত্র বস্তুর অ্যারেতে পরিণত করেছি। এই সাধারণ ফাংশনটি পেস্ট করা এক্সেল (বা গুগল শিট) ডেটার একটি স্ট্রিং নেয় (সাধারণত ক থেকে textarea) এবং এটিকে অবজেক্টের অ্যারেতে পরিণত করে। এটি কলাম / সম্পত্তি নামের জন্য প্রথম সারি ব্যবহার করে।

function excelToObjects(stringData){
    var objects = [];
    //split into rows
    var rows = stringData.split('\n');

    //Make columns
    columns = rows[0].split('\t');

    //Note how we start at rowNr = 1, because 0 is the column row
    for (var rowNr = 1; rowNr < rows.length; rowNr++) {
        var o = {};
        var data = rows[rowNr].split('\t');

        //Loop through all the data
        for (var cellNr = 0; cellNr < data.length; cellNr++) {
            o[columns[cellNr]] = data[cellNr];
        }

        objects.push(o);
    }

    return objects;
}

আশা করি এটি ভবিষ্যতে কাউকে সহায়তা করবে।


1

আপডেট: এটি কেবলমাত্র সত্য যদি আপনি এমএস এক্সেলের পরিবর্তে কেবলমাত্র ওয়াইফাইফিস ব্যবহার করেন।

এখানে সরবরাহিত সমস্ত উত্তরের এবং সেখানে স্বীকৃত উত্তরটিতে আসলে একটি প্রবাহ রয়েছে। প্রবাহটি হ'ল যখনই আপনার এক্সেলের একটি খালি ঘর থাকে এবং অনুলিপি করুন, ক্লিপবোর্ডে আপনার একে অপরের পাশে 2 টি ট্যাব অক্ষর রয়েছে, তাই বিভাজনের পরে আপনি অ্যারেতে একটি অতিরিক্ত আইটেম পাবেন যা পরে সেই সারিতে একটি অতিরিক্ত ঘর হিসাবে প্রদর্শিত হবে এবং অন্যান্য সমস্ত কক্ষকে এক এক করে নিয়ে যায়। সুতরাং এড়াতে আপনাকে মূলত সমস্ত ডাবল ট্যাব (কেবলমাত্র একে অপরের পাশে থাকা ট্যাবগুলি) একটি স্ট্রিতে একটি ট্যাব চরের সাথে প্রতিস্থাপন করতে হবে এবং কেবলমাত্র তখনই এটি বিভক্ত করুন।

@ ইউজারফিউজারের জাস্টফিডেলের একটি আপডেট সংস্করণ এখানে মুছে ফেলা পাঠানো ডেটা ফিল্টার করে সমস্যাটি সমাধানের জন্য এখানে রয়েছে এক্সট্রাট্যাবগুলি

http://jsfiddle.net/sTX7y/794/

function removeExtraTabs(string) {
  return string.replace(new RegExp("\t\t", 'g'), "\t");
}

function generateTable() {
  var data = removeExtraTabs($('#pastein').val());
  var rows = data.split("\n");
  var table = $('<table />');

  for (var y in rows) {
    var cells = rows[y].split("\t");
    var row = $('<tr />');
    for (var x in cells) {
      row.append('<td>' + cells[x] + '</td>');
    }
    table.append(row);
  }

  // Insert into DOM
  $('#excel_table').html(table);
}

$(document).ready(function() {
  $('#pastein').on('paste', function(event) {
    $('#pastein').on('input', function() {
      generateTable();
      $('#pastein').off('input');
    })
  })
})

আমি প্রকৃতপক্ষে জানতে পেরেছি যে কেবলমাত্র আপনি কেবলমাত্র সফটওয়্যারটির স্প্রেডশিট থেকে অনুলিপি করলেই এটি ঘটে। হুম .. কেউ যদি এতে হোঁচট খায় তবে এটি এখানে রেখে দেওয়া।
আরাম

0

এক্সেল 2007 এর "ডেটা" ট্যাবের অধীনে এটি করার জন্য একটি বৈশিষ্ট্য রয়েছে যা বেশ সুন্দরভাবে কাজ করে।


0

এটি খনন করা হচ্ছে, যদি ভবিষ্যতে কেউ এর মধ্যে আসে। আমি উপরের কোডটি ইচ্ছাকৃত হিসাবে ব্যবহার করেছি, তবে এটি কোনও ডাটাবেসে জমা দেওয়ার পরে টেবিলটি প্রদর্শন করে এমন একটি ইস্যুতে ছড়িয়ে পড়ে। আপনি একবার আপনার ক্যোয়ারিতে নতুন লাইন এবং ট্যাবগুলি প্রতিস্থাপন করতে পিএইচপি ব্যবহার করার জন্য ডেটা সঞ্চয় করে ফেললে এটি অনেক সহজ। জমা দেওয়ার পরে আপনি প্রতিস্থাপনটি সম্পাদন করতে পারেন, text _POST [অনুরোধ] ​​আপনার পাঠের নাম হবে:

$postrequest = trim($_POST[request]);
$dirty = array("\n", "\t");
$clean = array('</tr><tr><td>', '</td><td>');
$request = str_replace($dirty, $clean, $postrequest);

আপনার ডাটাবেসে এখন কেবল সন্নিবেশ করুন $ অনুরোধ করুন এবং এটি একটি HTML টেবিল হিসাবে সংরক্ষণ করা হবে।


-1

আপনি যদি পিএইচপি থেকে আপনার এক্সেল ফাইলটি পড়েন, এবং তা হয় এটি কোনও ডিবিতে সংরক্ষণ করুন বা এটিতে কিছু প্রক্রিয়াজাতকরণ করা ভালই হতে পারে।

এখানে পিএইচপি দিয়ে এক্সেল ডেটা কীভাবে পড়তে এবং লিখতে হয় সে সম্পর্কে একটি ইন-ডিপ্ট টিউটোরিয়াল এখানে রয়েছে:
http://www.ibm.com/developerworks/opensource/library/os-phpexcel/index.html


এটি একেবারে ভয়ানক সমাধান। আমি বর্তমানে এটি করছি বলে আমি এই থ্রেডে এসেছি এবং এটি অবিশ্বাস্যরূপে ত্রুটির প্রবণ। এক্সেল কখনও কখনও সংখ্যার হিসাবে পূর্ণসংখ্যার হিসাবে আলাদা হয়, কখনও কখনও স্ট্রিং হিসাবে ভাসমান হিসাবে।
wobbily_col

ব্যবহারকারীর পরিস্থিতিও প্রযোজ্য, যেখানে আপনাকে আপনার ব্যাঙ্কের মতো অবিশ্বাস্য উত্স থেকে পেস্ট করতে হবে, যার এক্সএলএস / সিএসভি ফাইলগুলি
মাইক্রো সিভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.