using System;
using System.Data.SqlClient;
using System.IO;
using System.Text;
namespace CsvDemo
{
class Program
{
static void Main(string[] args)
{
using (SqlConnection con = new SqlConnection("bağlantı cümlesi"))
{
string commandText = "SELECT TOP 1000 * FROM KIMLIK";
using (SqlCommand cmd = new SqlCommand(commandText, con))
{
try
{
con.Open();
using (var reader = cmd.ExecuteReader())
{
var csv = new CsvUtilities();
csv.ExportCsv("test.csv", reader);
}
}
finally
{
if (con.State != System.Data.ConnectionState.Closed)
con.Close();
}
}
}
}
public class CsvUtilities
{
public CsvUtilities(string delimiter = ";")
{
this.delimiter = delimiter;
}
string delimiter;
private string SetCsvEscapeCharacters(string data)
{
if (data.Contains("\""))
{
data = data.Replace("\"", "\"\"");
}
if (data.Contains(delimiter))
{
data = String.Format("\"{0}\"", data);
}
if (data.Contains(System.Environment.NewLine))
{
data = String.Format("\"{0}\"", data);
}
return data;
}
public bool ExportCsv(string path, SqlDataReader reader, bool append = true)
{
if (reader.HasRows)
{
using (var sw = new StreamWriter(path, append, Encoding.UTF8))
{
//Sütun adlarını yaz
for (int i = 0; i < reader.FieldCount; i++)
{
sw.Write(SetCsvEscapeCharacters(reader.GetName(i)));
if (i < reader.FieldCount - 1)
sw.Write(delimiter);
}
sw.Write(Environment.NewLine);
sw.Flush();
//Satırları yaz
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
sw.Write(SetCsvEscapeCharacters(reader.GetValue(i).ToString()));
if (i < reader.FieldCount - 1)
sw.Write(delimiter);
}
sw.Write(Environment.NewLine);
sw.Flush();
}
}
return true;
}
return false;
}
}
}
}