1

重複の可能性:
リスト/ソートリストからCSV文字列を作成するための効率的な方法C#?

ここでは、c#を使用してデータベース情報を.csvファイルにエクスポートする必要があります。

ここでコードを提供していますが、csvファイルへの読み込みに時間がかかります

public void CSVFile(DataTable table, string FilePath)
{
// Create the CSV file to which grid data will be exported.
StreamWriter swr = new StreamWriter(FilePath, false);
//First we will write the headers.
int iColCount = table.Columns.Count;
for (int i = 0; i < iColCount; i++)
{
    swr.Write(dtDataTablesList.Columns[i]);
    if (i < iColCount - 1)
    {
        swr.Write(",");
    }
}
swr.Write(swr.NewLine);

// Now write all the rows.
foreach (DataRow dr in table.Rows)
{
    for (int i = 0; i < iColCount; i++)
    {
        if (!Convert.IsDBNull(dr[i]))
        {
            swr.Write(dr[i].ToString());
        }
        if (i < iColCount - 1)
        {
            swr.Write(",");
        }
    }
    swr.Write(sw.NewLine);
}
swr.Close();
}

ありがとうをするより良い方法を教えてください

4

1 に答える 1

0

はい、最近私は同じ問題を抱えていました、

私は解決策を持っています、このコードを試してください。

private void button1_Click(object sender, EventArgs e)
{
    Stopwatch swra = new Stopwatch();
    swra.Start();
    string NewconnectionString = "myCoonectionString";
    StreamWriter CsvfileWriter = new StreamWriter(@"D:\testfile.csv");
    string sqlselectQuery = "select * from Mytable";
    SqlCommand sqlcmd = new SqlCommand();

    SqlConnection spContentConn = new SqlConnection(NewconnectionString);
    sqlcmd.Connection = spContentConn;
    sqlcmd.CommandTimeout = 0;
    sqlcmd.CommandType = CommandType.Text;
    sqlcmd.CommandText = sqlselectQuery;
    spContentConn.Open();
    using (spContentConn)
    {
        using (SqlDataReader sdr = sqlcmd.ExecuteReader())
        using (CsvfileWriter)
        {
            //For getting the Table Headers
            DataTable Tablecolumns = new DataTable();

            for (int i = 0; i < sdr.FieldCount; i++)
            {
                Tablecolumns.Columns.Add(sdr.GetName(i));
            }
            CsvfileWriter.WriteLine(string.Join(",", Tablecolumns.Columns.Cast<datacolumn>().Select(csvfile => csvfile.ColumnName)));
            //For table headers

            while (sdr.Read())
            //based on your columns
                YourWriter.WriteLine(sdr[0].ToString() + "," + sdr[1].ToString() + "," +   
sdr[2].ToString() + "," + sdr[3].ToString() + "," + sdr[4].ToString() + "," + 
sdr[5].ToString() + "," + sdr[6].ToString() + "," + sdr[7].ToString() + "," + 
sdr[8].ToString() + "," + sdr[9].ToString() + "," + sdr[10].ToString() + "," + 
sdr[11].ToString() + ",");

        }
    }
   swra.Stop();
Console.WriteLine(swra.ElapsedMilliseconds);
}

このコードを使用すると、datareader を使用してデータベース情報を csv ファイルにすばやくエクスポートできます。

于 2012-09-24T11:10:34.580 に答える