সি # তে সিএসভি ফাইলে ডেটা লেখা


197

আমি একটি মধ্যে লিখুন চেষ্টা করছি csvC # এর ভাষায় সারিতে ফাইল সারি। এখানে আমার ফাংশন

string first = reader[0].ToString();
string second=image.ToString();
string csv = string.Format("{0},{1}\n", first, second);
File.WriteAllText(filePath, csv);

পুরো ফাংশনটি একটি লুপের মধ্যে চলে এবং প্রতিটি সারিটি csvফাইলে লেখা উচিত । আমার ক্ষেত্রে, পরবর্তী সারিতে বিদ্যমান সারিটি ওভাররাইট করে এবং শেষ পর্যন্ত, আমি সিএসভি ফাইলে একটি একক রেকর্ড পাচ্ছি যা সর্বশেষটি one আমি কীভাবে csvফাইলের সমস্ত সারি লিখতে পারি ?


বরং একটি ব্যবহার করুন StringBuilderএবং তারপরে একটি সংরক্ষণ করুন?
জোহান

1
আপনি যদি প্রতিদিন এটি সম্পাদন করতে চান তবে এটি লিনকপ্যাড ব্যবহার করার পরামর্শ দিচ্ছি, যা সিএসভিতে ডেটা লেখার জন্য একটি কার্যকর ফাংশন নিয়ে আসে:Util.WriteCsv (mydatacollection, @"c:\temp\data.csv");
মার্কো

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

@ ম্যাথিজ ওয়েজসেলস কোন লাইব্রেরির পরামর্শ?
আরশ মোতামেদী

উত্তর:


311

হালনাগাদ

আমার দুর্বল দিনগুলিতে, আমি নিজেই এটি করার পরামর্শ দিয়েছিলাম (এটি একটি সাধারণ প্রশ্নের সহজ সমাধান ছিল) তবে এটি আরও বেশি জনপ্রিয় হওয়ার কারণে, আমি সিএসভিহেল্পার লাইব্রেরিটি ব্যবহার করব যা সমস্ত সুরক্ষা চেক ইত্যাদি করে using

প্রশ্ন / উত্তর যা বলে তার চেয়ে সিএসভি আরও জটিল।

আসল উত্তর

আপনার ইতিমধ্যে একটি লুপ রয়েছে বলে এটি এটি করার মতো বিবেচনা করুন:

//before your loop
    var csv = new StringBuilder();

//in your loop
    var first = reader[0].ToString();
    var second = image.ToString();
    //Suggestion made by KyleMit
    var newLine = string.Format("{0},{1}", first, second);
    csv.AppendLine(newLine);  

//after your loop
    File.WriteAllText(filePath, csv.ToString());

বা এই প্রভাব কিছু। আমার যুক্তিটি হ'ল: প্রতিটি আইটেমের জন্য আপনাকে ফাইলে লেখার দরকার পড়বে না, আপনি কেবল একবার স্ট্রিমটি খোলার পরে এতে লিখে যাবেন।

আপনি প্রতিস্থাপন করতে পারেন

File.WriteAllText(filePath, csv.ToString());

সঙ্গে

File.AppendAllText(filePath, csv.ToString());

যদি আপনি একই ফাইলটিতে সিএসভির পূর্ববর্তী সংস্করণ রাখতে চান

সি # 6

আপনি যদি সি # 6.0 ব্যবহার করেন তবে নিম্নলিখিতগুলি করতে পারেন

var newLine = $"{first},{second}"

সম্পাদনা

এখানে একটি প্রশ্নের লিঙ্ক এখানে যা ব্যাখ্যা করে তা কী Environment.NewLineকরে।


1
@ রাজাত না, কারণ 2 একটি নতুন লাইন
জোহান

4
আপনি এর থেকে {2}Environment.NewLineAppendLineAppend
মুক্তিও

37
এবং যখন আপনার সিএসভি সামগ্রীতে একটি কমা থাকে যার পালানোর প্রয়োজন হয়? আপনার উদ্ধৃতি দরকার। এবং যখন একটি উদ্ধৃতি পলায়নের প্রয়োজন হয়? এই উত্তরটি বোঝার চেয়ে সিএসভি ফাইলগুলি সঠিকভাবে তৈরি করা আরও জটিল।
এমজিএসম

1
আমি একটি "ব্যতিক্রম টাইপ" পেয়েছি: "সিস্টেম.অনুত্তরাইজডঅ্যাক্সেসএক্সেপশন",
চিট খাইন

3
আমি আপনার সমাধানটি চেষ্টা করেছি তবে আমার (ফরাসি সংস্কৃতি) System.Globalization.CultureInfo.CurrentCulture.TextInfo.ListSeparatorকমা ব্যবহার না করে এটি আরও ভাল কাজ করে ।
পিসিক্যাট

89

আমি আপনাকে আরও ক্লান্তিকর পথে যাওয়ার জন্য সুপারিশ করব। বিশেষত যদি আপনার ফাইলের আকার বড় হয়।

using(var w = new StreamWriter(path))
{
    for( /* your loop */)
    {
        var first = yourFnToGetFirst();
        var second = yourFnToGetSecond();
        var line = string.Format("{0},{1}", first, second);
        w.WriteLine(line);
        w.Flush();
    }
}

File.AppendAllText()একটি নতুন ফাইল খোলে, লিখিত সামগ্রী লিখে তারপরে ফাইলটি বন্ধ করে দেয়। ওপেন স্ট্রিমে ডেটা লেখার চেয়ে ফাইল খোলাই অনেক বেশি রিসোর্স-ভারী অপারেশন। একটি লুপের ভিতরে কোনও ফাইল খোলার কারণে পারফরম্যান্স ড্রপ হবে।

জোহানের প্রস্তাবিত পদ্ধতির সমস্ত আউটপুট মেমরির মধ্যে সঞ্চয় করে এবং তারপরে একবার লিখে এই সমস্যার সমাধান করে। তবে (বড় ফাইলগুলির ক্ষেত্রে) আপনার প্রোগ্রামটি প্রচুর পরিমাণে র‍্যাম গ্রহণ করবে এবং এমনকি ক্রাশ হবেOutOfMemoryException

আমার সমাধানের আর একটি সুবিধা হ'ল আপনি ইনপুট ডেটাতে বর্তমান অবস্থান সংরক্ষণ করে বিরতি \ পুনরায় শুরু করতে পারবেন।

upd। সঠিক জায়গায় ব্যবহার করে রাখা হয়েছে


1
আপনি লুপের জন্য আপনার করা উচিত ভিতরেusing বিবৃতি। অন্যথায় আপনি ফাইলটি বার বার পুনরায় খুলতে যাচ্ছেন।
অলিভার

2
ভাল উত্তর. উত্তরটি সঠিক করুন যদি আপনি "{2}" ফর্ম্যাট স্ট্রিং থেকে সরান এবং "চিত্র "টিকে একই লাইনে" দ্বিতীয় "দিয়ে প্রতিস্থাপন করুন। এছাড়াও, ডাব্লু ক্লোজ () দিয়ে লেখককে বন্ধ করতে ভুলবেন না; ডাব্লু.ফ্লুশ () এর দরকার নেই।
মুভিএক্স 13 এ

6
এই উত্তরটি চরিত্রগুলি থেকে বাঁচার প্রয়োজনীয়তা উপেক্ষা করে।
এমজিএসম

আমরা কী যুক্ত করতে পারি যে এটি আপনার লেখককে এটির মতো সেট করতে সহায়তা করে: নতুন স্ট্রাইম রাইটার (পথ, মিথ্যা, এনকোডিং
UTUTF8

আপনার যদি কয়েকশ মিলিয়ন লাইন থাকে ... আপনার কি প্রতিটি লাইনে ফ্লাশ করা উচিত?
আর্দিয়ান্টো সুহেন্দার

30

হাতে হাতে সিএসভি ফাইলগুলি লেখা কঠিন কারণ আপনার ডেটাতে কমা এবং নিউলাইন থাকতে পারে। আমি আপনাকে পরিবর্তে একটি বিদ্যমান লাইব্রেরি ব্যবহার করার পরামর্শ দিচ্ছি।

এই প্রশ্নে কয়েকটি বিকল্পের উল্লেখ রয়েছে।

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


4
এখানেই একমাত্র যুক্তিযুক্ত সঠিক উত্তর। এটি অন্যান্য লজ্জাজনক যে অন্যান্য খারাপ উত্তরগুলি হাত দ্বারা এটি করার চেষ্টা করে এমন অনেকগুলি উত্স রয়েছে।
এমজিএসম

17

আমি একটি দুটি পার্স সমাধান ব্যবহার করি কারণ এটি বজায় রাখা খুব সহজ

// Prepare the values
var allLines = (from trade in proposedTrades
                select new object[] 
                { 
                    trade.TradeType.ToString(), 
                    trade.AccountReference, 
                    trade.SecurityCodeType.ToString(), 
                    trade.SecurityCode, 
                    trade.ClientReference, 
                    trade.TradeCurrency, 
                    trade.AmountDenomination.ToString(), 
                    trade.Amount, 
                    trade.Units, 
                    trade.Percentage, 
                    trade.SettlementCurrency, 
                    trade.FOP, 
                    trade.ClientSettlementAccount, 
                    string.Format("\"{0}\"", trade.Notes),                             
                }).ToList();

// Build the file content
var csv = new StringBuilder();
allLines.ForEach(line => 
{
    csv.AppendLine(string.Join(",", line));            
});

File.WriteAllText(filePath, csv.ToString());

1
বড় ফাইলগুলি তৈরি করার সময় আপনি এই পদ্ধতির সাথে মেমরির চাপের মুখোমুখি হতে পারেন। আপনি যদি .ToList অপসারণ করেন তবে সমস্তলাইনগুলি আইইনুমারবেলে <অবজেক্ট []> হবে। তারপরে আপনি তার জন্য "এলরিংয়ের জন্য" অর্থাৎ অ্যালাইনগুলির পরিবর্তে নির্বাচন করতে পারেন, (লাইন => সিএসভি.এপেন্ডেলাইন (স্ট্রিং.জয়াইন (",", লাইন))) নির্বাচন করুন যা আপনাকে একটি আইনেউমারেবল <স্ট্রিং> দেয়। এটি এখন কেবল ফাইলটি কিন্তু WritAllLines পদ্ধতিতে পাস করা যেতে পারে। এর অর্থ এখন পুরো জিনিসটি অলস এবং আপনাকে মেমরির মধ্যে সমস্ত কিছু টানতে হবে না, তবে আপনি এখনও খুশি সন্তানের বাক্য গঠনটি পেয়েছেন।
RhysC

আমি আপনার পদ্ধতিটি সিএসভি ফাইলে লিখতে ব্যবহার করছি। এটা দুর্দান্ত! আমার সর্বশেষ বাস্তবায়নের জন্য সো এর File.AppendAllLines(filePath, lines, Encoding.ASCII);পরিবর্তে আমাকে ব্যবহার করা দরকার File.WriteAllText(filePath, csv.ToString());, আমি খুব চটুল কিছু করছি। স্ট্রিংবিল্ডার ব্যবহার করে সিএসভি তৈরির পরে, আমি এটিকে অ্যাপলডলাইনস-এ কল করার জন্য একটি আইনিম্যারেবল পেতে একটি তালিকা <স্ট্রিং> এ রূপান্তর করেছি, যা সিএসভি.টোস্ট্রিং () কে প্যারামিটার হিসাবে গ্রহণ করবে না: List<string> lines = new List<string>(); lines.Add(csv.ToString(0, csv.Length));আপনার কি আরও ভাল উপায় আছে?
প্যাট্রিসিয়া

12

প্রতিবার কল করার পরিবর্তে AppendAllText()আপনি একবার ফাইলটি খোলার বিষয়ে চিন্তা করতে পারেন এবং তারপরে পুরো সামগ্রীটি একবার লিখে ফেলুন:

var file = @"C:\myOutput.csv";

using (var stream = File.CreateText(file))
{
    for (int i = 0; i < reader.Count(); i++)
    {
        string first = reader[i].ToString();
        string second = image.ToString();
        string csvRow = string.Format("{0},{1}", first, second);

        stream.WriteLine(csvRow);
    }
}

@ আ মজিং: দুঃখিত, একটি টাইপো এখন স্থির।
অলিভার

এই উত্তরের অন্তর্ভুক্ত রয়েছে যে এক্সটেনশনটি অবশ্যই সিএসভি হতে হবে। যদি এটি xls হয়, ডেটা সবই একটি কলামে উপস্থিত হবে ... সিএসভি এটি প্রতিটি কলামে সঠিকভাবে উপস্থিত হবে।
gman

10

পরিবর্তে কেবল অ্যাপেন্ডএলটেক্সট ব্যবহার করুন:

File.AppendAllText(filePath, csv);

অ্যাপেন্ডএলটেক্সটের একমাত্র নেতিবাচকতাটি হ'ল ফাইল উপস্থিত না থাকলে এটি ত্রুটি ছুঁড়ে দেবে, সুতরাং এটি অবশ্যই পরীক্ষা করা উচিত

দুঃখিত, ডকুমেন্টেশন পড়ার আগে স্বর্ণকেশী মুহূর্ত । যাইহোক, WritAllText পদ্ধতি ফাইল উপস্থিত থাকলে ফাইলটিতে পূর্বে লিখিত সমস্ত কিছু ওভাররাইট করে।

মনে রাখবেন যে আপনার বর্তমান কোডটি সঠিকভাবে নতুন লাইন ব্যবহার করছে না, উদাহরণস্বরূপ নোটপ্যাডে আপনি এগুলি সমস্ত লম্বা লাইন হিসাবে দেখতে পাবেন। সঠিক নতুন লাইন পেতে কোডটি এতে পরিবর্তন করুন:

string csv = string.Format("{0},{1}{2}", first, image, Environment.NewLine);

2
@ রাজাত না, এটি আপনার চিত্রের ডেটার ঠিক পরে নতুন লাইন চরিত্রটি লিখবে।
শেডো উইজার্ড আপনার জন্য কান

6
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;

public partial class CS : System.Web.UI.Page
{
    protected void ExportCSV(object sender, EventArgs e)
    {
        string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand("SELECT * FROM Customers"))
            {
                using (SqlDataAdapter sda = new SqlDataAdapter())
                {
                    cmd.Connection = con;
                    sda.SelectCommand = cmd;
                    using (DataTable dt = new DataTable())
                    {
                        sda.Fill(dt);

                        //Build the CSV file data as a Comma separated string.
                        string csv = string.Empty;

                        foreach (DataColumn column in dt.Columns)
                        {
                            //Add the Header row for CSV file.
                            csv += column.ColumnName + ',';
                        }

                        //Add new line.
                        csv += "\r\n";

                        foreach (DataRow row in dt.Rows)
                        {
                            foreach (DataColumn column in dt.Columns)
                            {
                                //Add the Data rows.
                                csv += row[column.ColumnName].ToString().Replace(",", ";") + ',';
                            }

                            //Add new line.
                            csv += "\r\n";
                        }

                        //Download the CSV file.
                        Response.Clear();
                        Response.Buffer = true;
                        Response.AddHeader("content-disposition", "attachment;filename=SqlExport.csv");
                        Response.Charset = "";
                        Response.ContentType = "application/text";
                        Response.Output.Write(csv);
                        Response.Flush();
                        Response.End();
                    }
                }
            }
        }
    }
}

এখানে কোন স্ট্রিং নির্মাতা কেন?
Seabizkit

1
কোনটি বোঝায় যা RFC আপনি এই লিখতেন: .Replace(",", ";") + ',' ?
ভিটি 100

আপনার 20000
বিক্রত

6

চাকাটিকে পুনরায় উদ্ভাবনের পরিবর্তে একটি গ্রন্থাগার ব্যবহার করা যেতে পারে। CsvHelperসিএসভি ফাইল তৈরি ও পড়ার জন্য দুর্দান্ত। এটি পঠন এবং লিখন অপারেশনগুলি স্ট্রিম ভিত্তিক এবং তাই প্রচুর পরিমাণে ডেটা সহ অপারেশনগুলিকে সমর্থন করে।


আপনি আপনার সিএসভি নীচের মত লিখতে পারেন।

using(var textWriter = new StreamWriter(@"C:\mypath\myfile.csv"))
{
    var writer = new CsvWriter(textWriter, CultureInfo.InvariantCulture);
    writer.Configuration.Delimiter = ",";

    foreach (var item in list)
    {
        writer.WriteField( "a" );
        writer.WriteField( 2 );
        writer.WriteField( true );
        writer.NextRecord();
    }
}

লাইব্রেরিটি প্রতিবিম্বটি ব্যবহার করা হওয়ায় এটি যে কোনও ধরণের সময় নেবে এবং সরাসরি পার্স করবে।

public class CsvRow
{
    public string Column1 { get; set; }
    public bool Column2 { get; set; }

    public CsvRow(string column1, bool column2)
    {
        Column1 = column1;
        Column2 = column2;
    }
}

IEnumerable<CsvRow> rows = new [] {
    new CsvRow("value1", true),
    new CsvRow("value2", false)
};
using(var textWriter = new StreamWriter(@"C:\mypath\myfile.csv")
{
    var writer = new CsvWriter(textWriter, CultureInfo.InvariantCulture);
    writer.Configuration.Delimiter = ",";
    writer.WriteRecords(rows);
}

মান 1, সত্য

VALUE2, মিথ্যা


আপনি librarys কনফিগারেশনের এবং সম্ভাবনার আপনি তা করতে পারেন সম্পর্কে আরও পড়তে চান এখানে


এটি কাজ করার জন্য আপনাকে স্ট্রিম রাইটারে সংস্কৃতিআইফোন পাস করতে হতে পারে।
আলিফ

3

কমাগুলি পরিচালনা করছেন

ব্যবহারের সময় মানগুলির মধ্যে কমাগুলি পরিচালনা করার জন্য string.Format(...), নিম্নলিখিতগুলি আমার পক্ষে কাজ করেছে:

var newLine = string.Format("\"{0}\",\"{1}\",\"{2}\"",
                              first,
                              second,
                              third                                    
                              );
csv.AppendLine(newLine);

সুতরাং এটি জোহানের উত্তরের সাথে একত্রিত করতে, এটি দেখতে এমন দেখাচ্ছে:

//before your loop
var csv = new StringBuilder();

//in your loop
  var first = reader[0].ToString();
  var second = image.ToString();
  //Suggestion made by KyleMit
  var newLine = string.Format("\"{0}\",\"{1}\"", first, second);
  csv.AppendLine(newLine);  

//after your loop
File.WriteAllText(filePath, csv.ToString());

সিএসভি ফাইল ফিরছে

আপনি যদি কোনও স্থানে ফাইলটি লেখার পরিবর্তে সহজেই ফিরে আসতে চান, তবে এটি কীভাবে আমি এটি সম্পাদন করেছি তার একটি উদাহরণ:

একটি সঞ্চিত পদ্ধতি থেকে

public FileContentResults DownloadCSV()
{
  // I have a stored procedure that queries the information I need
  SqlConnection thisConnection = new SqlConnection("Data Source=sv12sql;User ID=UI_Readonly;Password=SuperSecure;Initial Catalog=DB_Name;Integrated Security=false");
  SqlCommand queryCommand = new SqlCommand("spc_GetInfoINeed", thisConnection);
  queryCommand.CommandType = CommandType.StoredProcedure;

  StringBuilder sbRtn = new StringBuilder();

  // If you want headers for your file
  var header = string.Format("\"{0}\",\"{1}\",\"{2}\"",
                             "Name",
                             "Address",
                             "Phone Number"
                            );
  sbRtn.AppendLine(header);

  // Open Database Connection
  thisConnection.Open();
  using (SqlDataReader rdr = queryCommand.ExecuteReader())
  {
    while (rdr.Read())
    {
      // rdr["COLUMN NAME"].ToString();
      var queryResults = string.Format("\"{0}\",\"{1}\",\"{2}\"",
                                        rdr["Name"].ToString(),
                                        rdr["Address"}.ToString(),
                                        rdr["Phone Number"].ToString()
                                       );
      sbRtn.AppendLine(queryResults);
    }
  }
  thisConnection.Close();

  return File(new System.Text.UTF8Encoding().GetBytes(sbRtn.ToString()), "text/csv", "FileName.csv");
}

একটি তালিকা থেকে

/* To help illustrate */
public static List<Person> list = new List<Person>();

/* To help illustrate */
public class Person
{
  public string name;
  public string address;
  public string phoneNumber;
}

/* The important part */
public FileContentResults DownloadCSV()
{
  StringBuilder sbRtn = new StringBuilder();

  // If you want headers for your file
  var header = string.Format("\"{0}\",\"{1}\",\"{2}\"",
                             "Name",
                             "Address",
                             "Phone Number"
                            );
  sbRtn.AppendLine(header);

  foreach (var item in list)
  {
      var listResults = string.Format("\"{0}\",\"{1}\",\"{2}\"",
                                        item.name,
                                        item.address,
                                        item.phoneNumber
                                       );
      sbRtn.AppendLine(listResults);
    }
  }

  return File(new System.Text.UTF8Encoding().GetBytes(sbRtn.ToString()), "text/csv", "FileName.csv");
}

আশা করি এটি সহায়ক।


2

এটি সি # ব্যবহার করে সিএসভি ফাইল তৈরির একটি সহজ টিউটোরিয়াল যা আপনার নিজের প্রয়োজন অনুসারে আপনি সম্পাদনা করতে এবং প্রসারিত করতে সক্ষম হবেন।

প্রথমে আপনাকে একটি নতুন ভিজ্যুয়াল স্টুডিও সি # কনসোল অ্যাপ্লিকেশন তৈরি করতে হবে, এটি করতে অনুসরণ করার পদক্ষেপ রয়েছে।

উদাহরণ কোডটি আপনার নির্দিষ্ট স্থানে MyTest.csv নামে একটি CSV ফাইল তৈরি করবে। ফাইলটির সামগ্রীগুলি প্রথম 3 টি সারিটিতে পাঠ্যযুক্ত 3 টি নামযুক্ত কলাম হওয়া উচিত।

https://tidbytez.com/2018/02/06/how-to-create-a-csv-file-with-c/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace CreateCsv
{
    class Program
    {
        static void Main()
        {
            // Set the path and filename variable "path", filename being MyTest.csv in this example.
            // Change SomeGuy for your username.
            string path = @"C:\Users\SomeGuy\Desktop\MyTest.csv";

            // Set the variable "delimiter" to ", ".
            string delimiter = ", ";

            // This text is added only once to the file.
            if (!File.Exists(path))
            {
                // Create a file to write to.
                string createText = "Column 1 Name" + delimiter + "Column 2 Name" + delimiter + "Column 3 Name" + delimiter + Environment.NewLine;
                File.WriteAllText(path, createText);
            }

            // This text is always added, making the file longer over time
            // if it is not deleted.
            string appendText = "This is text for Column 1" + delimiter + "This is text for Column 2" + delimiter + "This is text for Column 3" + delimiter + Environment.NewLine;
            File.AppendAllText(path, appendText);

            // Open the file to read from.
            string readText = File.ReadAllText(path);
            Console.WriteLine(readText);
        }
    }
}

2
একটি সমাধানের একটি লিঙ্ক স্বাগত, তবে দয়া করে আপনার উত্তরটি কার্যকর না হওয়া নিশ্চিত করুন: লিঙ্কটির চারপাশে প্রসঙ্গটি যুক্ত করুন যাতে আপনার সহ ব্যবহারকারীদের কিছু ধারণা থাকতে পারে এটি কী এবং কেন সেখানে রয়েছে, তবে আপনি পৃষ্ঠার সর্বাধিক প্রাসঙ্গিক অংশটি উদ্ধৃত করুন লক্ষ্য পৃষ্ঠাটি অনুপলব্ধ ক্ষেত্রে লিঙ্কটি পুনরায় সংযুক্ত করুন। লিঙ্কের চেয়ে সামান্য বেশি উত্তরগুলি মুছতে পারে।
শ্রী

আহ আমি দেখি. সাহায্য করার জন্য ধন্যবাদ. আমি পরিবর্তনগুলি হাইলাইট করেছি। দয়া করে ভোট দিন
ব্লগগিন্স

0

আপনাকে কেবল একটি লাইন ফিড যুক্ত করতে হবে "\n\r"


0

সিএসভি ফাইল সহজেই তৈরি করতে এখানে আরেকটি ওপেন সোর্স লাইব্রেরি রয়েছে, সিনচু ইটিএল

List<dynamic> objs = new List<dynamic>();

dynamic rec1 = new ExpandoObject();
rec1.Id = 10;
rec1.Name = @"Mark";
rec1.JoinedDate = new DateTime(2001, 2, 2);
rec1.IsActive = true;
rec1.Salary = new ChoCurrency(100000);
objs.Add(rec1);

dynamic rec2 = new ExpandoObject();
rec2.Id = 200;
rec2.Name = "Tom";
rec2.JoinedDate = new DateTime(1990, 10, 23);
rec2.IsActive = false;
rec2.Salary = new ChoCurrency(150000);
objs.Add(rec2);

using (var parser = new ChoCSVWriter("emp.csv").WithFirstLineHeader())
{
    parser.Write(objs);
}

আরও তথ্যের জন্য, দয়া করে ব্যবহার সম্পর্কে কোডপ্রজেক্ট নিবন্ধটি পড়ুন ।


0

ওভাররাইটিং সমস্যা থেকে মুক্তি পাওয়ার এক সহজ উপায় হ'ল File.AppendTextফাইলটির শেষে লাইন সংযোজন করা

void Main()
{
    using (System.IO.StreamWriter sw = System.IO.File.AppendText("file.txt"))
    {          
        string first = reader[0].ToString();
        string second=image.ToString();
        string csv = string.Format("{0},{1}\n", first, second);
        sw.WriteLine(csv);
    }
} 

0
enter code here

স্ট্রিং স্ট্রিং_ভ্যালু = স্ট্রিং.এম্পটি;

        for (int i = 0; i < ur_grid.Rows.Count; i++)
        {
            for (int j = 0; j < ur_grid.Rows[i].Cells.Count; j++)
            {
                if (!string.IsNullOrEmpty(ur_grid.Rows[i].Cells[j].Text.ToString()))
                {
                    if (j > 0)
                        string_value= string_value+ "," + ur_grid.Rows[i].Cells[j].Text.ToString();
                    else
                    {
                        if (string.IsNullOrEmpty(string_value))
                            string_value= ur_grid.Rows[i].Cells[j].Text.ToString();
                        else
                            string_value= string_value+ Environment.NewLine + ur_grid.Rows[i].Cells[j].Text.ToString();
                    }
                }
            }
        }


        string where_to_save_file = @"d:\location\Files\sample.csv";
        File.WriteAllText(where_to_save_file, string_value);

        string server_path = "/site/Files/sample.csv";
        Response.ContentType = ContentType;
        Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(server_path));
        Response.WriteFile(server_path);
        Response.End();

0
public static class Extensions
{
    public static void WriteCSVLine(this StreamWriter writer, IEnumerable<string> fields)
    {
        const string q = @"""";
        writer.WriteLine(string.Join(",",
            fields.Select(
                v => (v.Contains(',') || v.Contains('"') || v.Contains('\n') || v.Contains('\r')) ? $"{q}{v.Replace(q, q + q)}{q}" : v
                )));
    }

    public static void WriteFields(this StreamWriter writer, params string[] fields) => WriteFields(writer, (IEnumerable<string>)fields);
}

এটি আপনাকে খুব সহজেই সিএসভি ফাইল লেখার অনুমতি দেয়। ব্যবহার:

StreamWriter writer = new StreamWriter("myfile.csv");
writer.WriteCSVLine(new[]{"A", "B"});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.