এক্সেলকে স্ট্রিং হিসাবে মান ব্যাখ্যা করতে বাধ্য করতে কমা-সীমাবদ্ধ CSV ফর্ম্যাট করা


64

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

উদাহরণ:

"141", "10/11/2002", "350.00", "1311742251"

এক্সেল এগুলি সমস্তকে তার জন্ম তারিখ / সংখ্যা বিন্যাসে রূপান্তরিত করার চেষ্টা করে। যে কাছাকাছি একটি উপায় আছে কি?


সম্পাদনা: আমার প্রশ্নের উদ্দেশ্য স্পষ্ট করে, বিভ্রান্তির জন্য দুঃখিত।

উত্তর:


67

যাদের উত্স ডেটা নিয়ন্ত্রণ করে তাদের পক্ষে, দৃশ্যত এক্সেল কোনও সিএসভি ক্ষেত্রের ফর্ম্যাটটি স্বয়ংক্রিয়ভাবে সনাক্ত করবে যদি না সিএসভি কলাম এই ফর্ম্যাটে থাকে তবে:

"=""Data Here"""

যেমন ...

20,       5.5%,      "0404 123 351", "3-6",  "=""123"""
[number]  [percent]  [number]        [date]  [string]  <-- how Excel interprets

এটি গুগল স্প্রেডশিটেও কাজ করে তবে অন্যান্য স্প্রেডশিট অ্যাপ্লিকেশনগুলি এই স্বরলিপিটি সমর্থন করে কিনা তা নিশ্চিত নয়।

যদি আপনি সন্দেহ করেন যে কোনও ডেটাতে নিজেই কোটস থাকতে পারে, আপনার এগুলি দ্বিগুণভাবে পালাতে হবে ...

"=""She said """"Hello"""" to him"""



(সম্পাদনা: সংশোধন করে আপডেট হয়েছে, ধন্যবাদ DMA57361!)


জট্টিল, আমরা শুধু তথ্য পরিবর্তন করতে হবে .. দীর্ঘশ্বাস
ব্যয়বহুল

4
শেষ কলামটি "=""123"""অন্যথায় এটি খারাপভাবে গঠন করা উচিত। একটি ক্ষেত্র থাকা ক্ষেত্রগুলি "অবশ্যই সীমিত করা উচিত এবং "ক্ষেত্রের "গুলি অন্য গুলি সহ পালাতে পারে ।
DMA57361

@ ডিএমএ ৫7361 actually১ আসলে তার কাছে যেভাবে আছে তা ঠিক আছে, এটির পাশের অন্যান্য দুটি ক্ষেত্রের যে পূর্ববর্তী সমান চিহ্নটি অনুপস্থিত। তিনি সেখানে যা রেখেছেন তা সেই কক্ষের সূত্রটি একটি স্ট্রিং ফিরিয়ে আনতে সেট করে। এটি এড়াতে, আপনি ঘরের ডেটা টাইপটিকে "পাঠ্য" এ সেট করতে পারেন।
ব্রেকথ্রু

2
যে টেবিল @Breakthrough সেখানে একটি CSV ফাইল প্রতিনিধিত্ব না এক্সেল ক্ষেত্র। শেষ মানটি ="123"কোনও বৈধ সিএসভি ক্ষেত্র নয় কারণ এতে ক্ষেত্রের ডিলিমিটার অক্ষরটি সঠিকভাবে এটি বা ক্ষেত্রের সীমানা " ছাড়াই রয়েছে । এক্সেলটি সূত্র হিসাবে এটি পড়ার ক্ষেত্রে ঘটেছিল তা নিখুঁতভাবে এক্সেলের উপর নির্ভর করে এবং সিএসভি ফাইলের সাথে কিছুই করার থাকে না।
DMA57361

2
@ প্রাইসচাইল্ড, আমার মূল প্রশ্নের মূল বক্তব্য (যা আমি সত্যিই খুব ভালভাবে ব্যাখ্যা করতে পারি নি) আসলে কীভাবে সিএসভি ব্যবহারকারীর পক্ষে এটি সহজতর করার জন্য বিন্যাস করা যায় । এবং তাই এই উত্তরটি আমি নিজেকে খুঁজে পেয়েছি এবং পোস্ট করতে চেয়েছিলাম। DMA57361 আসলে একটি সহায়ক সংশোধনও এনেছে, ধন্যবাদ!
সাইমন পূর্ব

36

অনেকের মত, আমি মাইক্রোসফ্ট যে সিদ্ধান্ত নিয়েছে এবং বিভিন্ন প্রস্তাবিত সমাধান চেষ্টা করেছি একই সিদ্ধান্ত নিয়ে লড়াই করে যাচ্ছি।

এক্সেল 2007 এর জন্য নিম্নলিখিতগুলি চলেছে:

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

যাহোক:

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

উদাহরণ:

"<tab character><some value>","<tab character><some other value>"

নোট করুন যে ট্যাব অক্ষরটি ডাবল উদ্ধৃতিগুলির মধ্যে থাকতে হবে। সম্পাদনা: দেখা যাচ্ছে যে ডাবল উদ্ধৃতিগুলি এমনকি প্রয়োজনীয় নয়।

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


এই ট্যাব ট্রিকটি আমার দিনটি বাঁচিয়েছিল, এক্সেল সত্যিই দীর্ঘ সংখ্যার মানগুলিকে সংখ্যায় রূপান্তর করছে এবং 15 তম পরে সমস্ত অঙ্ক হারিয়েছে। এক্সেলকে ট্যাব উপসর্গের সাথে পাঠ্য হিসাবে বিবেচনা করার জন্য পরিচালিত। সুতরাং কেবল তারিখগুলি নয়, সংখ্যাগুলির জন্যও কাজ করে।
মার্কাস ইয়ারজেলি

এটি সত্যিই দরকারী, আপনাকে ধন্যবাদ!
ফ্ল্যাভিও

22

এক্সেলের আমদানি কার্যকারিতা ব্যবহার করে আপনাকে প্রতিটি কলামটি ফর্ম্যাট (অটো, পাঠ্য বা তারিখ) নির্দিষ্ট করতে দেয় এবং ডেটা ফাইলগুলিতে কোনও পরিবর্তন প্রয়োজন হয় না।

আপনি যেমন জানতে পারেন DataGet External DataFrom Textএক্সেল 2007/2010 হবে।
অথবা DataImport External DataImport Dataএক্সেল 2003।

এখানে দেওয়া উদাহরণের ডেটা অনুসারে এক্সেল 2003 টেক্সট আমদানি উইজার্ডের একটি চিত্র এখানে আমাকে দুটি পরবর্তী কলামটি পাঠ্য হিসাবে আমদানি করে দেখায়:

এক্সেল 2003: পদক্ষেপ 3-এ পাঠ্য আমদানি উইজার্ড - ডেটা ধরণের


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

@ সিমন, আপনি কী স্ক্রিপ্ট লিখছেন? কোনও মধ্যবর্তী বিন্যাসের পরিবর্তে আপনি সরাসরি আসল এক্সেল ফাইলগুলি উত্পাদন করতে এটি পেতে পারেন?
DMA57361

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

1
একটা ব্যাপার কিছু প্রশ্ন তাই ওভার পিএইচপি → এক্সেল প্রথম কয়েক আমি সব চেষ্টা করেছি সম্পর্কে একটি উত্তর নির্দেশিত পিএইচপি এক্সেল , যাতে দেখে মূল্য হতে পারে।
DMA57361

বেশ কয়েকটি আনসার পড়ার পরে খুব সহায়ক, গ্রেগ
121

1

সাইমনের উদাহরণটি আমার পক্ষে কার্যকর হয়নি এবং আমি সন্দেহ করি এটি ভাষার পার্থক্য। সি # তে এখানে আমার কর্ম বিন্যাসের স্ট্রিংটি দেখতে কেমন:

var linebreak = (i++ == list.Count) ? "" : "\r\n";

csv += String.Format("=\"{0}\",{1},{2},{3},=\"{4}\"{5}",
    item.Value, item.Status, item.NewStatus, item.Carrier, c.Status, linebreak);

এবং আউটপুট ফাইলটি এটির মতো দেখাচ্ছে:

="abababababab",INVALID,INVALID,USPS,="",
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9400110200793482982812",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9400110200793482982812",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9400110200793000216184",UNKNOWNSTATUS,INVALID,USPS,=""

যেমন দেখা যায়, আউটপুট ফাইলের ফর্ম্যাটটি এমন ="VALUE",নয় "=""VALUE""",যা আমি বিশ্বাস করি ভিজ্যুয়াল বেসিক সম্মেলন হতে পারে।

আমি এক্সেল 2010 ব্যবহার করছি ident ঘটনাচক্রে, গুগল শিটগুলি এভাবে ফর্ম্যাট করা কোনও ফাইল খোল / রূপান্তর করবে না। আপনি যদি সমান চিহ্নটি এভাবে সরিয়ে রাখেন তবে এটি কাজ করবে "VALUE",- এক্সেলটি এখনও ফাইলটি খুলবে তবে আপনি যে কলামগুলিকে স্ট্রিং করতে চান তা উপেক্ষা করুন।


-2

এক্সেলকে পাঠ্য হিসাবে তারিখটি ব্যাখ্যা করতে বাধ্য করার সহজ উপায় হ'ল সম্পূর্ণ উদ্ধৃতি ব্যবহারের পরিবর্তে তারিখের সামনে একটি একক উদ্ধৃতি রাখা:

'10/11/2002

আপনি যদি সিএসভি না খোলার পরিবর্তে আমদানি করতে পারেন তবে প্রতিটি কলামের ফর্ম্যাটটি কী হওয়া উচিত তা আপনি এক্সেলকে বলতে পারেন। আমি জিজ্ঞাসা এই প্রশ্নটি একবার দেখুন ।


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