2016-04-26 11 views
-2

私はあなたのポイントをクリアする必要があります。私はここで愚かなSaveFileDialogでアプリケーションを使用することができますが、私はちょっと立ち往生しています。 基本的には、OpenFileDialogを使って.xmlファイルを検索し、それをdatagridviewに表示します。次に、データグリッドビューの内容をCSVファイルにエクスポートしたいと考えています。 そして、それが止まる場所です...私のSaveFileDialogは言われていますが、私は書いている心配があることを知っていますが、始めはなぜ、どのように理解できませんでしたか...savefiledialogでExcelファイルに書き込めないのはなぜですか?

私は 'Stream' 'WriteLine'の定義を含んでおらず、タイプ 'Stream'の最初の引数を受け入れる拡張メソッド 'WriteLine'が見つかりませんでした(使用するディレクティブまたはアセンブリへの参照はありません)

コメント2行でmyStream.writeline bahエクスポートされているが空のCSV(通常のもの)

私を助けてくれますか?

private void SaveBtn_Click(object sender, EventArgs e) 
{ 
    Stream myStream;   
    SaveFileDialog enregistrercsv = new SaveFileDialog(); 
    enregistrercsv.Filter = "Fichier CSV (*.csv)|*.csv|All files (*.*)|*.*"; 

    if (enregistrercsv.ShowDialog() == DialogResult.OK) 
    { 

     if ((myStream = enregistrercsv.OpenFile()) != null) 
     { 
      string strHeader = ""; 

       for (int i = 0; i < dataGridView1.Columns.Count; i++) 
       { 

        strHeader += dataGridView1.Columns[i].HeaderText + ","; 

       } 

        myStream.WriteLine(strHeader); 



      for (int m = 0; m < dataGridView1.Rows.Count; m++) 
      { 

       string strRowValue = ""; 

        for (int n = 0; n < dataGridView1.Columns.Count; n++) 
        { 

         strRowValue += dataGridView1.Rows[m].Cells[n].Value + ","; 

        } 

        myStream.WriteLine(strRowValue); 

      } 

     } 
     myStream.Close(); 

     MessageBox.Show("Fichier CSV créé avec succès FUCK YEAH"); 
    } 

} 

は、StreamWriterの代わりのストリームを使用してみてください、そして、それは一般的にのみへのベストプラクティスをできるだけ狭い範囲であなたのストリームを宣言しています、そしてように、使用してブロックにそうすることをみんな

答えて

0

ありがとう:

using(StreamWriter writer = enregistrercsv.OpenFile()) 
{ 
    if(writer != null) 
    { 
     //Perfrom your writer.WriteLine("value goes here"); here. 
    } 
} 

これは、あなたがそれで終わったとしてあなたはできるだけ早くあなたのストリームを閉じて、あなたが同じパスで新しいストリームをオープンしようとした場合、それは問題を起こさないことが保証されます。

問題が解決するかどうかを確認してください。

編集:より多くのコンテキストを持つようにコードビットを変更しました。コメントは、情報を処理して書き込む2つのループです。ここ

+0

OKしかし、私はどこで置くかわからない...申し訳ありませんが、私はC#で非常に新しいだと私は持っています頭痛ハハ。 – Alessandro

+0

あまり役に立たないコメント@Alessandro、これはインターネットが使われていることは言うまでもありません。オンラインでたくさんの作業例があります。あなたの指が歩く「新しいかどうか」を伝える必要があります。 – MethodMan

+0

@MethodManなぜ私の答えが役に立たないのですか?彼はWriteLineメソッドを持たないジェネリックストリームに書き込もうとしていました。 WriteLineを持つより具体的なオブジェクトに彼を導いた。 –

0

を用いてブロック内のStreamWriterを使用した例である。

private void SaveBtn_Click(object sender, EventArgs e) 
{ 
    SaveFileDialog enregistrercsv = new SaveFileDialog(); 
    enregistrercsv.Filter = "Fichier CSV (*.csv)|*.csv|All files (*.*)|*.*"; 

    if (enregistrercsv.ShowDialog() == DialogResult.OK) 
    { 

     using (StreamWriter writer = new StreamWriter(enregistrercsv.FileName) 
     { 
      string strHeader = ""; 

       for (int i = 0; i < dataGridView1.Columns.Count; i++) 
       { 

        strHeader += dataGridView1.Columns[i].HeaderText + ","; 

       } 

        writer.WriteLine(strHeader); 

      for (int m = 0; m < dataGridView1.Rows.Count; m++) 
      { 

       string strRowValue = ""; 

        for (int n = 0; n < dataGridView1.Columns.Count; n++) 
        { 

         strRowValue += dataGridView1.Rows[m].Cells[n].Value + ","; 

        } 


        writer.WriteLine(strHeader); 


      } 

     } 

     MessageBox.Show("Fichier CSV créé avec succès FUCK YEAH"); 
    } 

} 

ネックス同様に、のStreamWriterを使用するために、できるだけ狭い範囲をそれを宣言するために優れている、と述べました。

ここで使用して文の内側のStreamWriterのメリットについての議論です:こんにちは、 https://stackoverflow.com/a/14637152/2844631

+0

[OK]をから、私は今:) しかし、まだ働いていない、私はクレイジーstupidsのStreamWriterを使用する必要がなぜ私が理解し、あなたにiclosemに感謝、それは今や明らかだとそれが働いていますエラー.. http://i.imgur.com/MHXzLWg.png 私はなぜ狂っているのか分かりません。すべては大丈夫です:/ – Alessandro

+0

私の悪い、それは働いています:) ありがとう – Alessandro

関連する問題