এক্সেলে CSV ভেঙে যাওয়ার কারণ ও সমাধান: UTF-8 BOM, সেমিকোলন ও শূন্য মুছে যাওয়া
সূচিপত্র
১. এক্সেলে CSV ফাইল খোলার পরিচিত সমস্যা
ডেভেলপাররা যখন সিস্টেম থেকে CSV ফরম্যাটে ডেটা এক্সপোর্ট করেন, তখন তা মাইক্রোসফট এক্সেলে ডাবল-ক্লিক করে খুললে ব্যবহারকারীরা প্রায়শই তিনটি বড় সমস্যায় পড়েন: ১) বাংলা বা ইউনিকোড অক্ষরগুলো দুর্বোধ্য প্রতীকে (মোজিবাকে) পরিণত হয়, ২) সব ডেটা কলামে বিভক্ত না হয়ে প্রথম কলামের ভেতর কমা সহ জটলা পাকিয়ে থাকে, এবং ৩) ফোন নম্বর বা জাতীয় পরিচয়পত্রের আগের শূন্য (যেমন 0171...) গায়েব হয়ে যায়।
২. সমস্যাত্রয়ের বৈজ্ঞানিক কারণ ও প্রতিকার
১. ইউনিকোড ভেঙে যাওয়ার কারণ: UTF-8 BOM অনুপস্থিতি
মাইক্রোসফট এক্সেল উইন্ডোজের ডিফল্ট সিস্টেম কোডপেজ (যেমন ANSI বা Windows-1252) ব্যবহার করে ফাইল খোলে। ফাইলটি যদি বিশুদ্ধ UTF-8 হয় তবে এক্সেল তা বুঝতে পারে না। সমাধান হলো ফাইলের একেবারে শুরুতে তিনটি বাইটের একটি স্বাক্ষর যোগ করা যাকে বলে UTF-8 BOM (Byte Order Mark: 0xEF, 0xBB, 0xBF)। এটি থাকলে এক্সেল স্বপ্রণোদিতভাবে ফাইলটিকে বাংলা ইউনিকোড হিসেবে রেন্ডার করে।
২. কলাম আলাদা না হওয়ার কারণ: কমা বনাম সেমিকোলন বিভাজন
ইংরেজি উইন্ডোজে কমা (,) হলো ডিলিমিটার। কিন্তু ইউরোপীয় ও অনেক আঞ্চলিক উইন্ডোজে দশমিকের জন্য কমা ব্যবহৃত হওয়ায় ডিলিমিটার হিসেবে সেমিকোলন (;) ব্যবহৃত হয়। ফাইলের প্রথম লাইনে sep=, বা sep=; নির্দেশ দিলে এক্সেল স্বয়ংক্রিয়ভাবে সঠিক বিভাজক গ্রহণ করে।
৩. শুরুতেই থাকা শূন্য মুছে যাওয়া (Leading Zeros)
এক্সেল 01812345678 দেখলে সেটিকে সংখ্যা মনে করে স্বতঃস্ফূর্তভাবে সামনের শূন্য কেটে 1812345678 বানিয়ে ফেলে। এটি ঠেকাতে সিএসভিতে মানটিকে ="01812345678" ফরম্যাটে কোট করতে হয়, অথবা এক্সেলের Text Import Wizard ব্যবহার করতে হয়।
৩. GoToolstack কনভার্টারের সুবিধা
GoToolstack JSON ↔ CSV কনভার্টার স্বয়ংক্রিয়ভাবে UTF-8 BOM অন্তর্ভুক্ত করে এক্সপোর্ট করে, যাতে এক্সেলে খুললে বাংলা অক্ষর সম্পূর্ণ অক্ষত ও নিখুঁত থাকে।