CSV ফাইলগুলিতে কমা ও বক্তৃতা চিহ্নগুলি কীভাবে পালাতে হবে যাতে তারা এক্সলে কাজ করে?


110

আমি একটি সিএসভি ফাইল তৈরি করছি (ট্যাবগুলির চেয়ে কমা দ্বারা সীমিত)। আমার ব্যবহারকারীরা সম্ভবত ডাবল ক্লিক করে এক্সেলের সিএসভি ফাইলটি খুলবেন। আমার ডেটাতে কমা এবং স্পিচ চিহ্ন থাকতে পারে, তাই আমি নীচের মতগুলি থেকে পালাচ্ছি।

Reference, Title, Description
1, "My little title", "My description, which may contain ""speech marks"" and commas."
2, "My other little title", "My other description, which may also contain ""speech marks"" and commas."

যতদূর আমি জানি যে এটি সর্বদা এটি করার উপায় ছিল। এখানে আমার বগলটি রয়েছে: আমি যখন এক্সেল 2010 এ এই ফাইলটি খুলি তখন আমার পালানো সম্মানিত হয় না। বক্তৃতা চিহ্ন শীটটিতে উপস্থিত হয়, এবং কমা নতুন কলামগুলির কারণ হয়।

উত্তর:


219

আমরা শেষ পর্যন্ত এর উত্তর খুঁজে পেয়েছি।

এক্সেল কেবলমাত্র কমা এবং স্পিচ চিহ্নগুলি থেকে বেরিয়ে আসার সম্মান করবে যদি কলামের মানটি কোনও স্থানের আগে না থাকে। সুতরাং ফাঁকা জায়গা ছাড়াই ফাইল তৈরি করা হচ্ছে ...

Reference,Title,Description
1,"My little title","My description, which may contain ""speech marks"" and commas."
2,"My other little title","My other description, which may also contain ""speech marks"" and commas."

... সমস্যা সমাধান। আশা করি এটি কাউকে সাহায্য করবে!


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

61

নীচে যদি আপনি বিশ্বাস করেন যে এটি এলোমেলো নীচে রয়েছে। এই নিয়মের ভিত্তিতে একটি ইউটিলিটি ফাংশন তৈরি করা যেতে পারে।

  1. যদি মানটিতে একটি কমা, নিউলাইন বা ডাবল উক্তি থাকে তবে স্ট্রিংয়ের মানটি ডাবল উদ্ধৃতিতে আবদ্ধ হওয়া উচিত।

  2. মানটির কোনও ডাবল উদ্ধৃতি অক্ষর অন্য ডাবল উদ্ধৃতি দিয়ে পালাতে হবে।

  3. মানটিতে যদি কমা, নিউলাইন বা ডাবল উদ্ধৃতি না থাকে তবে স্ট্রিংয়ের মানটি অপরিবর্তিত অবস্থায় ফিরিয়ে দেওয়া উচিত।


4
এটিতে কোমা, ডাবল-কোটস বা নিউলাইন নেই এমন কিছু উদ্ধৃত করে কিছু আঘাত করে?
এরিক পুনরায়

2
কোনও এরিক রেপেন আমি মনে করি না যে এটি স্বাভাবিকভাবে আঘাত করবে। আমি জাভা ব্যাকগ্রাউন্ডের অন্তর্ভুক্ত যেখানে এটি পুরাতনটির পাঠ্য প্রতিস্থাপন করে নতুন স্ট্রিং তৈরি না করার সুপারিশ করা হয়েছে কারণ হিপ স্মৃতিতে তাদের নিজস্ব অংশ রয়েছে। আপনি যদি চান তবে আপনি নিঃশর্তভাবে সমস্ত মানগুলি প্রতিস্থাপন করতে পারেন এবং এটির কারণ না থাকলেও এটি কোনও সমস্যা সৃষ্টি করে কিনা তা আমাদের জানান।
AlphaBetaGamma

2
এমন একটি ক্ষেত্র যা একটি স্পেস দিয়ে শুরু হয় বা শেষ হয়।
জোনাথন রোজেন

2

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

FUNCTION field(str IN VARCHAR2) RETURN VARCHAR2 IS
    C_NEWLINE CONSTANT CHAR(1) := '
'; -- newline is intentional

    v_aux VARCHAR2(32000);
    v_has_double_quotes BOOLEAN;
    v_has_comma BOOLEAN;
    v_has_newline BOOLEAN;
BEGIN
    v_has_double_quotes := instr(str, '"') > 0;
    v_has_comma := instr(str,',') > 0;
    v_has_newline := instr(str, C_NEWLINE) > 0;

    IF v_has_double_quotes OR v_has_comma OR v_has_newline THEN
        IF v_has_double_quotes THEN
            v_aux := replace(str,'"','""');
        ELSE
            v_aux := str;
        END IF;
        return '"'||v_aux||'"';
    ELSE
        return str;
    END IF;
END;

0

কমপক্ষে এক্সেল 2016-এ একক উদ্ধৃতিগুলিও ডাবল উদ্ধৃতিগুলি না পেয়েও দুর্দান্ত কাজ করে:

'text with spaces, and a comma','more text with spaces','spaces and "quoted text" and more spaces','nospaces','NOSPACES1234'

এক্সেল এটিকে 5 টি কলামে রেখে দেবে (আপনি যদি "টেক্সট থেকে কলামগুলিতে" উইজার্ডে "পাঠ্য যোগ্যতা" হিসাবে একক উদ্ধৃতিটি বেছে নেন)


-3

ডাবল উদ্ধৃতি দেওয়ার পরেও আমার কিছুদিন এই সমস্যা ছিল।

পাইপ ডেলিমিটারকে কমা দিয়ে প্রতিস্থাপন করা হয়েছে, তারপরে জিনিসগুলি ভাল কাজ করেছে।


1
আপনার পক্ষে কী কাজ করেছে তার একটি নমুনা আপনার দেওয়া উচিত যাতে প্রয়োজনে ওপি অনুলিপি করে এটি কপি করতে পারে।
রূবেণ ট্যানার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.