none
dataGridViewのデータを指定したCSVファイルに新規シートを作成して保存したいです。 RRS feed

  • 質問

  • Visual Studio Community 2019 Version4.8. を使っております。

    「dataGridViewのデータをCSVファイルに保存する」をネットで検索してやってみました。毎回新規Bookが出来るのではなく同じBookにシートを分けて保存したいですのですが方法が見つかりません。既存のBookの最終シート、もしくは指定の位置にシート名を指定して保存したいです。機能としては実現可能なのでしょうか。

    どうかよろしくお願いいたします。

    2019年12月3日 8:57

すべての返信

  • どういう意味でしょうか? CSV ファイルに、Book やシートという概念は無いはずですが…。

    CSV ファイルを出力することが目的なのではなく、Excel 等に展開することが最終目的なのであれば、現状、その CSV ファイルをどのように取り扱っているのかを教えてください。

    Excel 化することは要件になく、あくまでも CSV ファイルを出力することが目的なのであれば、そのファイルをメモ帳で開いた時に、具体例としてどういう文字列が出力されることを期待しているのかを教えてください。

    2019年12月3日 9:02
  • C#からExcelファイルを操作するには、ClosedXMLが便利ですが、検討されましたでしょうか?

    ExcelなしでExcelファイルを操作するには?(ClosedXML編)[.NET 4.0、C#/VB]
    https://www.atmarkit.co.jp/ait/articles/1810/24/news016.html


    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    2019年12月3日 10:17
    モデレータ
  • すみません。まったく無知でした。自作のソフトでCSVファイル保存しているのですがアイコンはエクセルになっていて、開くとエクセルで立ち上がりシートの追加後の保存もできるのでだったら複数のファイルでなくシートを追加した方がすっきりする時もあるなと思ったからです。そもそも私はCSVで出力していますがエクセルで扱っていた訳ですね。
    2019年12月3日 11:05
  • ありがとうございます。私にはまたちょっとハードル高そうですがよく読んでみます。
    2019年12月3日 11:08
  • kinto-to-claveさん、こんにちは。フォーラムオペレーターのHarukaです。
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    ご説明によると、、csvファイルに新しいシートを作成してほしいとのことです。
    datagridviewをcsvファイルに変換するだけの場合は、次のコードを試すことができます。
    DataTable dt = (DataTable)dataGridView1.DataSource;
                StringBuilder sb = new StringBuilder();
    
                IEnumerable<string> columnNames = dt.Columns.Cast<DataColumn>().
                                                  Select(column => column.ColumnName);
                sb.AppendLine(string.Join(",", columnNames));
    
                foreach (DataRow row in dt.Rows)
                {
                    IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
                    sb.AppendLine(string.Join(",", fields));
                }
    
                File.WriteAllText("D:\\test.csv", sb.ToString());
    

    すでにシートが含まれているcsvファイルに新しいシートを追加する場合、それは難しいと思います。
    次のリンクを参照して、理由を知ることができます。
    How to create multiple sheets in csv file

    どうぞよろしくお願いいたします。

    MSDN/ TechNet Community Support Haruka
    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2019年12月6日 7:25
    モデレータ