まさべぇのブログ

まさべぇのブログ

これまでの経験をもとに日々、感じた事などを記します

MENU
f:id:Latock2020:20201016141202j:plain f:id:Latock2020:20201016141055j:plain f:id:Latock2020:20201016141150j:plain f:id:Latock2020:20201016141232j:plain f:id:Latock2020:20201016141144j:plain f:id:Latock2020:20201016141123j:plain f:id:Latock2020:20201016141135j:plain f:id:Latock2020:20201016141220j:plain f:id:Latock2020:20201016141110j:plain f:id:Latock2020:20201016141116j:plain f:id:Latock2020:20201016141129j:plain f:id:Latock2020:20201016141155j:plain f:id:Latock2020:20201016141225j:plain f:id:Latock2020:20201016141240j:plain f:id:Latock2020:20201016141102j:plain f:id:Latock2020:20201016141214j:plain f:id:Latock2020:20201016141302j:plain f:id:Latock2020:20201016141245j:plain f:id:Latock2020:20201016141255j:plain f:id:Latock2020:20201016141208j:plain f:id:Latock2020:20201016141250j:plain

C# WPF でDataGridの内容をCSV出力する関数

C#WPFでDataGridの内容をCSV出力する共通関数を作りました。

現在自分の作成しているシステムで使用しているソースコードです。

参考になれば幸いです。

 

        public void saveToCsv(DataGrid ADataGrid)
        {
            SaveFileDialog sfd = new SaveFileDialog();

            sfd.FileName = "";
            sfd.InitialDirectory = @"C:\";
            sfd.Filter = "すべてのファイル(*.csv)|*.csv";
            sfd.FilterIndex = 1;
            sfd.Title = "保存先のファイルを選択してください";
            sfd.RestoreDirectory = true;
            sfd.OverwritePrompt = true;
            sfd.CheckPathExists = true;
            if (sfd.ShowDialog() == DialogResult.OK)
            {
                using (StreamWriter writer = new StreamWriter(@sfd.FileName, false, Encoding.GetEncoding("shift_jis")))
                {

                    int rowCount = ADataGrid.Items.Count;

                    // ユーザによる行追加が許可されている場合は、最後の新規入力用の
                    // 1行分を差し引く
                    //if (ADataGrid.AllowUserToAddRows == true)
                    if (ADataGrid.CanUserAddRows == true)
                    {
                        rowCount = rowCount - 1;
                    }

                    // 行
                    for (int i = 0; i < rowCount; i++)
                    {
                        // リストの初期化
                        List strList = new List();

                        // 列
                        for (int j = 0; j < ADataGrid.Columns.Count; j++)
                        {
                            DataGridRow dgr = ADataGrid.ItemContainerGenerator.ContainerFromIndex(i) as DataGridRow;
                            string data = ((TextBlock)ADataGrid.Columns[j].GetCellContent(dgr)).Text;
                            //トリミング
                            data = data.Replace("\r", "").Replace("\n", "");
                            if (data != null)
                            {
                                strList.Add(data);
                            }
                        }
                        String[] strArray = strList.ToArray(); // 配列へ変換

                        // CSV 形式に変換
                        String strCsvData = String.Join(",", strArray);

                        writer.WriteLine(strCsvData);
                    }
                }

            }
        }

じゃらんnet

格安航空券【トラベリスト】

【ホテルズコンバインド】

隠れた絶品グルメを産直!九州おとりよせ本舗

U-NEXT今なら31日間無料今すぐ無料トライアル

動画を見るならアベマ