সি # তে কোনও সিএসভি পাঠক / লেখক গ্রন্থাগার রয়েছে কি? [বন্ধ]


111

সি # তে কোনও সিএসভি পাঠক / লেখক গ্রন্থাগার রয়েছে কি?


68
আমি আলাদা করতে অনুরোধ। এটি অবশ্যই একটি গঠনমূলক প্রশ্ন এবং এর জন্য গুগলে প্রথম ফলাফল .net csv library। আমার দাবির পক্ষে প্রমাণ, যদিও অদ্ভুত, এই প্রশ্নটি গত ছয় বছরে 22000 এরও বেশি বার দেখা হয়েছে।
শোভনিক

5
সত্য বলেছে - গুগলে প্রথম হিট
রোবেটো

উত্তর:


107

ব্যবহার করে দেখুন CsvHelper । এটি FastCsvReader হিসাবে ব্যবহার করা যেমন সহজ এবং লেখার কাজও করে। আমি অতীতে ফাস্টসিএসভিআরডার নিয়ে খুব খুশি ছিলাম, তবে আমার এমন কিছু দরকার ছিল যা লেখার ক্ষেত্রেও ছিল, এবং ফাইলহেল্পার্সে সন্তুষ্ট ছিল না।

পাঠ:

var csv = new CsvReader( stream );
var myCustomTypeList = csv.GetRecords<MyCustomType>();

লেখা:

var csv = new CsvWriter( stream );
csv.WriteRecords( myCustomTypeList );

সম্পূর্ণ প্রকাশ: আমি এই গ্রন্থাগারের লেখক।


3
ধন্যবাদ, জোশ আমি এটি দিয়ে গিয়েছিলাম এবং এটি উভয়ই দ্রুত এবং মেমরির দক্ষ। আমি মনে করি ডকুমেন্টেশনটি প্রথমবারের ব্যবহারকারীদের জন্য কিছুটা উন্নত করা যেতে পারে, তবে এটি অবশ্যই যথেষ্ট ছিল।
স্যাম

কাস্টম প্রকার ব্যতিরেকে এই লাইব্রেরিটি ব্যবহার করার কোনও উপায় আছে যাতে আমি কেবল আমার টেবিল গ্রিড (কাস্টম) এর মাধ্যমে পুনরাবৃত্তি করতে পারি এবং শিরোনামটি লিখি এবং তারপরে প্রতিটি সারি ক্ষেত্রটি পাস করতে পারি? আমি কেবল ফাইলগুলিতে ত্রুটি রোধ করার উপায় খুঁজছি (সঠিকভাবে পালানো ইত্যাদি)।
u84six

হ্যাঁ. আপনি ব্যবহার করতে পারেন WriteField। এখানে দস্তাবেজগুলি পরীক্ষা করুন joshclose.github.io/CsvHelper
জোশ

1
@ জিমানো সত্য নয় আপনি স্বতন্ত্র ক্ষেত্রগুলি পড়তে পারেন বা এমনকি সারিটির জন্য একটি স্ট্রিং অ্যারে পেতে পারেন। ডকুমেন্টেশন দেখুন। joshclose.github.io/CsvHelper
জোশ বন্ধ

@ জোশক্লোজ ওহ, শুনে ভাল লাগল, ধন্যবাদ! আমি কেবল এখানে শুরু করার গাইডটি পরীক্ষা করে দেখেছি : joshclose.github.io/CsvHelper/… এবং এতে আমার ব্যবহারের মামলা অন্তর্ভুক্ত হয়নি। আমার আরও ক্ষমা চাওয়া উচিত ছিল। যাইহোক, যে পৃষ্ঠায় এটি বলা আছে যে কিছু ধরনের একটি ম্যাপিং ব্যবহার ব্যবহার করা বাঞ্ছনীয় উপায় CsvHelper। সম্ভবত এটি সেই জায়গায় কিছু বিকল্প পড়ার কৌশল অফার করতে পারে? আমি আমার মূল মন্তব্যটি মুছে ফেলেছি, কারণ এটি এখন অপ্রাসঙ্গিক :-)
জিমানো

21

ফ্রেমওয়ার্কের মধ্যেই বেশ কয়েকটি বিকল্প রয়েছে।

মাইক্রোসফ্ট.ভিউজুয়াল বেসিকের রেফারেন্স করা সহজতমগুলির মধ্যে একটি , তারপরে টেক্সটফিল্ড পার্সার ব্যবহার করুন । এটি মূল কাঠামোর একটি সম্পূর্ণ কার্যকরী সিএসভি পাঠক।

আর একটি ভাল বিকল্প হ'ল সিএসভি ফাইলগুলি পড়ার জন্য ডেটাসেট ব্যবহার করা


6
আমি সর্বদা ভাবতাম যে এটি মাইক্রোসফ্ট.ভিউজুয়াল বেসিক অ্যাসেমব্লিতে কেন ছিল ... এমএস কি ভেবেছিল যে সি # বিকাশকারীরা সিএসভি ব্যবহার করেনি?
থমাস লেভেস্ক

4
@ থমাস: বিশেষত যেহেতু প্রচুর সি # বিকাশকারীরা তাদের প্রকল্পগুলিতে একটি ভিজ্যুয়াল বেসিক সমাবেশ অন্তর্ভুক্ত করার চিন্তায় ক্রন্দিত

2
হ্যাঁ - সেখানে প্রচুর চমৎকার "গুডিজ" রয়েছে। আমি মনে করি এটি আরও বেশি কারণ ভিবিতে এমন কিছু ভাষা নির্মাণ রয়েছে যা প্রকৃতপক্ষে কাঠামোর মধ্যে বিবেচনা করা হয়নি, তবে তারা কার্যকর না করে কখনও ভিবি 6 ব্যবহারকারী পেতে সক্ষম হত না। ডিভাইস এবং অ্যাপ্লিকেশন সার্ভিস নেমস্পেসে সব ধরণের দরকারী জিনিস রয়েছে।
রিড কোপসি

20
@ রোবোটো, যে কোনও সি # বিকাশকারী মাইক্রোসফ্টকে রেফারেন্স দেওয়ার জন্য ক্রিঙ্ক করেন their ভিজুয়ালবাসিক তাদের প্রকল্পে একটি অজ্ঞাত ভাষা ob আরও খারাপ তারা বুঝতে পারে না। নেট মোটেও না।
অ্যাশ

3
আরেকটি ভিবি সমাবেশ মণি CopyDirectory হল: stackoverflow.com/questions/58744/...

17

সেবাস্তিয়ান লরিওনের একটি এপিএস সিএসভি রিডারCSV নামে কোডপোজেক্টে দুর্দান্ত পাঠক রয়েছে । সম্ভবত সি # এর জন্য অন্যতম সেরা এবং এটি বিনামূল্যে।

যতদূর লেখার জন্য, শুধু ব্যবহার করুন StreamWriter

DataGridViewকোনও ফাইলে একটি লেখার জন্য এখানে কিছু বয়লারপ্লেট কোড রয়েছে :

private void exportDGVToCSV(string filename)
{
    if (dataGridView1.Columns.Count != 0) 
    {    
        using (Stream stream = File.OpenWrite(filename))
        {
            stream.SetLength(0);
            using (StreamWriter writer = new StreamWriter(stream))
            {
                // loop through each row of our DataGridView
                foreach (DataGridViewRow row in dataGridView1.Rows) 
                {
                    string line = string.Join(",", row.Cells.Select(x => $"{x}"));
                    writer.WriteLine(line);
                }

                writer.Flush();
            }
        };
    }
}

2
এটি আমার প্রিয়। দুর্দান্ত ছোট গ্রন্থাগার।
অ্যালেক্স

2
সিএসভি রচনা সহজ - কেবল একটি সাধারণ পাঠ্য আউটপুট পদ্ধতি ব্যবহার করুন এবং কমা দ্বারা পৃথক। আপনার পড়ার জন্য কেবলমাত্র একটি লাইব্রেরি / কাস্টম হ্যান্ডলার প্রয়োজন ...
রিড কোপসি

10
@ রেড: আপনি যদি কমা এবং উদ্ধৃতি চিহ্নগুলি সঠিকভাবে পালাতে চান তবে এটি খুব তুচ্ছ নয়। আমি এটির জন্য এমনকি কোনও মানীকরণ আছে কিনা তা নিশ্চিত নই, তবে এটি করা খুব সাধারণ।
স্টিফান স্টেইনগার

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

4
প্রমিতকরণ জন্য RFC 4180. হয় tools.ietf.org/html/rfc4180
জোশ বন্ধ

7

হ্যাঁ - যদিও আমি ধরে নিচ্ছি আপনি আসলে সুনির্দিষ্ট জিজ্ঞাসা করছেন?

ফাইলহেল্পার চেষ্টা করুন


ঠিক আছে, আমি করেছি তবে কিছু অদ্ভুত কারণে ফাইলহেল্পারগুলি এলোমেলোভাবে ভেঙে গেছে। তদুপরি, ফাইলহেল্পার্স গ্রন্থাগারটি দীর্ঘদিন ধরে বিকাশে নেই।
এরিক শিয়েরবুম

1
ফাইলহেল্পাররা এখন সক্রিয়ভাবে বিকাশ করেছেন, গিটহাব দেখুন
xmedeko

3

কয়েক ডজন আছে।

http://www.filehelpers.net/ সবচেয়ে সাধারণ একটি।

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


আমরা ফাইলহেল্পারগুলিও ব্যবহার করি।
টাঙ্গুরেেন

1
ফাইলহেলপার্সকে কনফিগার করার উপদ্রব বলে আমি পেয়েছি। ফাস্টসিএসভিআরডার ব্যবহার করা অনেক সহজ ছিল।
জোশ বন্ধ

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