মূল অংশে যান

XML থেকে Excel-এ কনভার্ট করুন

XML এক্সপোর্ট, ফিড আর ডেটা ফাইলকে ফরম্যাট করা Excel শিটে বদলান — বারবার আসা রেকর্ডগুলো আপনার হয়ে শনাক্ত করা হয়, অ্যাট্রিবিউট ও নেস্টেড এলিমেন্ট কলাম হিসেবে সাজানো হয়, আর কিছুই সংরক্ষণ করা হয় না।

  • কখনো সংরক্ষণ করা হয় না
  • কোনো লাইন নেই, অপেক্ষা নেই
  • সাইনআপ নেই, ওয়াটারমার্ক নেই

যেভাবে কাজ করে

1

XML যোগ করুন

একটি .xml ফাইল ছাড়ুন বা XML পেস্ট করুন। Excel-এর নিজস্ব XML Spreadsheet 2003 ফাইলও চলে।

2

রেকর্ড বেছে নিন

বারবার আসা এলিমেন্টটি — product, item, row — আপনার হয়ে বেছে নেওয়া হয়; ফাইলের বাকি সব টেবিলের তালিকা আর সরাসরি প্রিভিউও থাকে।

3

ডাউনলোড

একটি .xlsx, যেখানে প্রতিটি কলামের সংখ্যা ও তারিখ সঠিক টাইপে থাকে, আর হেডার সারি বোল্ড ও ফিল্টারযোগ্য।

ট্রির ভেতরে সারি খুঁজে বের করা

XML-এ টেবিলের কোনো ধারণা নেই, তাই প্রথম কাজ হলো কোন এলিমেন্টগুলো রেকর্ড, তা চিহ্নিত করা। নির্ভরযোগ্য সংকেত হলো পুনরাবৃত্তি: একটি প্যারেন্ট এলিমেন্টের ভেতরে একই নামের অনেকগুলো চাইল্ড থাকলে প্রায় সবসময়ই সেটি রেকর্ডের তালিকা, আর সেই চাইল্ডদের নিজস্ব চাইল্ড এলিমেন্ট ও অ্যাট্রিবিউট হয়ে যায় কলাম। ডেটা XML-এর বিপুল অংশে — এক্সপোর্ট, ফিড, API রেসপন্স, কনফিগারেশন ডাম্প — এটি কাজ করে, কারণ এগুলো সবই একইভাবে তৈরি।

অ্যাট্রিবিউট আর চাইল্ড এলিমেন্ট দুটোই কলামে পরিণত হয়, আর এটি দরকারি, কারণ XML একই কথা বলার দুটি উপায় দেয় এবং ভিন্ন ভিন্ন সিস্টেম ভিন্ন উপায় বেছে নেয়। এক এক্সপোর্ট id="42" লেখে অ্যাট্রিবিউট হিসেবে; আরেকটি <id>42</id> লেখে এলিমেন্ট হিসেবে; তৃতীয়টি একই ডকুমেন্টে দুটোই করে। গ্রিডের কাছে এই পার্থক্যের কোনো মানে নেই, আপনার কাছেও থাকা উচিত নয়, তাই দুটোই কলাম হিসেবে আসে — অ্যাট্রিবিউটগুলো চিহ্নিত থাকে, যাতে দুই রূপে থাকা একই নাম পরস্পরের সঙ্গে না মেলে যায়।

এক স্তরের বেশি গভীর নেস্টিং এলিমেন্টের নামগুলো জুড়ে সমতল করা হয়, ঠিক নেস্টেড JSON-এর মতো। কোনো রেকর্ডে বারবার আসা চাইল্ড থাকলে — একটি অর্ডারের ভেতরে তিনটি অর্ডার লাইন — চারপাশের সবকিছু ডুপ্লিকেট না করে গ্রিড সেগুলোকে সারি হিসেবে দেখাতে পারে না, তাই পুনরাবৃত্ত মানগুলো তাদের সেলেই রাখা হয়। কলামের নাম থেকে নেমস্পেস বাদ দেওয়া হয়, কারণ স্প্রেডশিটে ns2:customerName নামের কলাম কারও কাজে আসে না; তবে মানগুলো অপরিবর্তিত থাকে।

লেখাভিত্তিক XML-এ খোঁজার মতো টেবিল নেই, আর তা কনভার্টও হয় খারাপভাবে। XHTML পেজ, DocBook আর্টিকেল, ePub অধ্যায় বা SVG ড্রয়িং হলো ডকুমেন্ট, ডেটাসেট নয়: এদের গঠন ইচ্ছাকৃতভাবেই নেস্টেড ও অনিয়মিত, আর সারি বানানোর মতো বারবার আসা কোনো রেকর্ড নেই। কনভার্ট করলে কিছু একটা তৈরি হবে, কিন্তু তা কাজে আসবে না। এই পেজ ডেটা XML-এর জন্য, আর পার্থক্যটা পরিষ্কার জানা থাকলে যেকোনো পরিমাণ টিউনিংয়ের চেয়ে বেশি সময় বাঁচে।

অন্য কিছু দরকার হলে

গঠন জানা থাকলে অনুমানের ওপর না ছেড়ে ইচ্ছে করে বের করে নিন। xmlstarlet sel -t -m "//order" -v "@id" -o "," -v "customer" -n data.xml একটি XPath এক্সপ্রেশন দিয়ে ঠিক আপনার দরকারি ফিল্ডগুলো তুলে আনে, আর xq একই কাজ করে jq-ধাঁচের সিনট্যাক্সে। ঘটনাচক্রে কাজ করে যাওয়া কনভার্শন আর পাইপলাইনে বসানোর মতো কনভার্শনের পার্থক্য এটিই।

খুব বড় ফাইলের জন্য এখানকার সবকিছুই ভুল গড়নের: পুরো ডকুমেন্ট একসাথে মেমোরিতে পার্স করা হয়, আর ট্রি হিসেবে পার্স করা XML সাধারণত ফাইলের সাইজের কয়েক গুণ জায়গা নেয়। স্ট্রিমিং পার্সার — Python-এর iterparse, বা যেকোনো ভাষার SAX — নির্দিষ্ট পরিমাণ মেমোরিতেই কয়েক গিগাবাইটের ডকুমেন্ট পার হয়ে যায়, আর কয়েকশো মেগাবাইটের পর এটিই একমাত্র বাস্তবসম্মত উপায়।

সাধারণ প্রশ্নোত্তর

XML-এর কোন অংশটি টেবিল, তা এটি কীভাবে বোঝে?

রেকর্ড হলো সেই এলিমেন্টগুলো, যা একই প্যারেন্টের নিচে বারবার আসে — <catalog>-এর ভেতরের প্রতিটি <book>, RSS চ্যানেলের প্রতিটি <item>। প্রতিটি গ্রুপকে তার রেকর্ড ও ফিল্ডের সংখ্যা দিয়ে নম্বর দেওয়া হয়, সবচেয়ে ভালোটি বেছে নেওয়া হয়, আর বাকিগুলো থাকে এক ক্লিক দূরে।

অ্যাট্রিবিউট আর নেস্টেড এলিমেন্টের কী হয়?

প্রতিটি তার পাথের নামে একটি কলাম হয়ে যায়: id অ্যাট্রিবিউট হয় id, <author><name> হয় author/name, আর <price currency="EUR"> থেকে আসে price ও price/@currency। কোনো ফিল্ড একটি রেকর্ডের ভেতরে বারবার এলে সেগুলো এক সেলে জোড়া হয়, অথবা নম্বর দেওয়া কয়েকটি কলামে ছড়িয়ে দেওয়া হয়।

এটি কি Excel-এর XML Spreadsheet 2003 ফাইল খুলতে পারে?

হ্যাঁ। এ ধরনের ফাইল শনাক্ত করা হয় এবং শিট ধরে ধরে কনভার্ট করা হয়, সংখ্যা, তারিখ ও টেক্সট অক্ষত রেখে।

ফাইলে যদি কয়েকটি টেবিল থাকে — অর্ডার আর সেগুলোর আইটেম?

প্রতিটি বারবার আসা গ্রুপ আলাদা করে দেখানো হয়। নেস্টেড টেবিলে, যেমন প্রতিটি অর্ডারের ভেতরের আইটেমগুলোতে, একটি কলাম থাকে যা তার প্যারেন্ট রেকর্ডকে চিহ্নিত করে, যাতে দুটি শিট মিলিয়ে দেখা যায়।

আমার ফাইল কি কোথাও সংরক্ষণ করা হয়?

না। XML পার্স করা আর ওয়ার্কবুক লেখা এখানেই হয়, কিছুই সংরক্ষণ করা হয় না।

অচেনা উৎসের XML খোলা কি নিরাপদ?

হ্যাঁ। ফাইলটি পড়ে আপনার ব্রাউজারের XML পার্সার, যা কখনো এক্সটার্নাল এন্টিটি বা DTD লোড করে না এবং ফাইলের ভেতরের কিছুই চালাতে পারে না।

জেনে রাখুন: যে ডকুমেন্ট ডেটা নয় বরং লেখা — XHTML পেজ, DocBook আর্টিকেল — তাতে খোঁজার মতো কোনো টেবিল নেই, তাই কনভার্ট ভালো হয় না। প্রায় ১০০ MB-এর বড় ফাইল আপনার ব্রাউজারের মেমোরি ছাড়িয়ে যেতে পারে।

এই টুলটি আপনার ওয়েবসাইটে যোগ করুন

যেকোনো ব্লগ, ক্লাসের পেজ বা হেল্প আর্টিকেলের জন্য ফ্রি। একটি স্নিপেট পেস্ট করলেই আপনার ভিজিটররা আপনার পেজেই এটি ব্যবহার করতে পারবেন।