4

asp.netでデータベースを読み取って.CSVファイルを作成する方法は?asp.netで.CSVファイルを作成する方法を教えてもらえますか?

前もって感謝します。

4

6 に答える 6

5

これを確認してください: DataTable を CSV ファイル形式にエクスポートする

public void CreateCSVFile(DataTable dt, string strFilePath)    
    {    
        #region Export Grid to CSV     

        // Create the CSV file to which grid data will be exported.    
        StreamWriter sw = new StreamWriter(strFilePath, false);

        // First we will write the headers.    
        //DataTable dt = m_dsProducts.Tables[0];    
        int iColCount = dt.Columns.Count;

        for (int i = 0; i < iColCount; i++)    
        {    
            sw.Write(dt.Columns[i]);    
            if (i < iColCount - 1)    
            {    
                sw.Write(",");    
            }    
        }    
        sw.Write(sw.NewLine);

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

        #endregion    
    }

ダウンロードで常に名前を付けて保存するように強制しようとしている場合は、コンテンツ タイプを application/octet-stream に設定する必要があります。

ソース:

 string attachment = "attachment; filename=MyCsvLol.csv";
    HttpContext.Current.Response.Clear();
    HttpContext.Current.Response.ClearHeaders();
    HttpContext.Current.Response.ClearContent();
    HttpContext.Current.Response.AddHeader("content-disposition", attachment);
    HttpContext.Current.Response.ContentType = "text/csv";
    HttpContext.Current.Response.AddHeader("Pragma", "public");

    var sb = new StringBuilder();
    foreach(var line in DataToExportToCSV)
      sb.AppendLine(TransformDataLineIntoCsv(line));

    HttpContext.Current.Response.Write(sb.ToString());
    HttpContext.Current.Response.End();

最も簡単な方法の1つは使用することですFileHelpers Library

FileHelpers.CsvEngine.DataTableToCsv(dataTable, filename);

WriteFile (FileHelperEngine から継承) オーバーロード。指定されたファイルにレコードの配列を書き込みます。

WriteStream (FileHelperEngine から継承) オーバーロード。指定された Stream にレコードの配列を書き込みます。

WriteString (FileHelperEngine から継承) オーバーロード。レコードの配列を String に書き込み、それを返します。

参考:
CSVファイルに書き込んでエクスポート?
Excel のようなアプリケーション用にデータをカンマ区切り (CSV) ファイルに
エクスポートする [ファイルの保存] ダイアログ ボックスを使用してデータテーブルを CSV にエクスポートする - C#

于 2012-11-16T05:21:44.293 に答える
0

CSVファイルのフォーマットを探しているとします。これは、非常に単純な構造を持つ通常のテキスト ファイルです。ここ で Wiki を 参照 でき ます.

データベースからデータを取得し、必要に応じてデータをテキストファイルに書き込むことで、自分で作成できます。

CSV ファイルの内容の例を次に示します。

Year,Make,Model
1997,Ford,E350
2000,Mercury,Cougar

Yearファイルには、Make、の3 つの列がありModel、データの 2 行は1997,Ford,E3502000,Mercury,Cougarです。

于 2012-11-16T07:15:21.337 に答える
0

CSV ファイルの作成方法については、C# での CSV ファイルの読み取りと書き込みに関する記事を参照してください。

ファイル コンテンツを動的に生成する方法と、動的にダウンロード可能なコンテンツを作成する記事で、ダウンロード可能なファイルのように動作させる方法を確認できます。

于 2012-11-16T05:21:24.773 に答える
0

なぜあなたはできないのですか:

1) データベースにクエリを実行します (たとえば、SQL リーダーを使用)。

2) HTTP 応答ヘッダー (response.ContentType) を MIME タイプ「application/csv」に設定します。

3) 結果セットの各行をコンマ区切り (CSV) 形式で書き出す (response.Write) ?

まさにそのアプローチの例を次に示します。

于 2012-11-16T05:21:26.000 に答える
0

これを試して:

string filePath = @"C:\test.csv";  
string delimiter = ",";  

string[][] output = new string[][]{  
new string[]{"Col 1 Row 1", "Col 2 Row 1", "Col 3 Row 1"},  
new string[]{"Col1 Row 2", "Col2 Row 2", "Col3 Row 2"}  
};  
int length = output.GetLength(0);  
StringBuilder sb = new StringBuilder();  
for (int index = 0; index < length; index++)  
sb.AppendLine(string.Join(delimiter, output[index]));  

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

詳細については、ヘルプを参照してください。

于 2012-11-16T05:24:22.763 に答える
0

とにかく、二重引用符、コンマ、スペースなどの特殊文字をファイルに含めることを許可する場合は、これに対応する堅牢な CSV ライブラリを見つける必要があります。

于 2012-11-16T05:25:31.150 に答える