1. 程式人生 > >C#將gridcontrol中的資料匯出到.csv檔案

C#將gridcontrol中的資料匯出到.csv檔案



C# 匯出CSV 然後用excel開啟,主要是用逗號來分割開每一列,匯出時間格式的時候必須要經過字元替換,否則出現亂碼。

//檔案匯出
        private void btnExport_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.DefaultExt = "*.csv";
            saveFileDialog.AddExtension = true;
            saveFileDialog.Filter = "csv files|*.csv";
            saveFileDialog.OverwritePrompt = true;
            saveFileDialog.CheckPathExists = true;
            saveFileDialog.FileName = "Alarm_" + ReplaceChars(DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss"));
            DialogResult result = saveFileDialog.ShowDialog();
            if (saveFileDialog.FileName != null) //開啟儲存檔案對話方塊
            {
                string fileName = saveFileDialog.FileName;//檔名字
                using (StreamWriter streamWriter = new StreamWriter(fileName, false, Encoding.Default))
                {
                    StringBuilder sb = new StringBuilder();
                    sb.Append("事件發生時間").Append(",");
                    sb.Append("事件名稱").Append(",");
                    sb.Append("告警級別").Append(",");
                    sb.Append("告警物件").Append(",");
                    streamWriter.WriteLine(sb.ToString());

                    //要寫的資料來源
                    for (int i = 0; i < dtPub.Rows.Count; i++)
                    {
                        StringBuilder sbline = new StringBuilder();
                        sbline.Append(ReplaceSpecialChars(dtPub.Rows[i][0].ToString()) + ",");
                        sbline.Append((dtPub.Rows[i][1] + ","));
                        sbline.Append((dtPub.Rows[i][2] + ","));
                        sbline.Append((dtPub.Rows[i][3]));
                        streamWriter.WriteLine(sbline.ToString());
                    }
                    streamWriter.Flush();
                    streamWriter.Close();
                }
            }

            if (File.Exists(saveFileDialog.FileName))
            {
                try
                {
                    if (DialogResult.Yes == MessageBox.Show("檔案已成功匯出,是否開啟檔案?", "提示", MessageBoxButtons.YesNo))
                    {
                        {
                            System.Diagnostics.Process.Start(saveFileDialog.FileName);
                        }
                    }
                }
                catch
                {
                    String msg = "該檔案不能開啟" + Environment.NewLine + Environment.NewLine + "Path: " + saveFileDialog.FileName;
                    MessageBox.Show(msg, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                String msg = "該檔案不能儲存" + Environment.NewLine + Environment.NewLine + "Path: " + saveFileDialog.FileName; MessageBox.Show(msg, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        //特殊字元替換
        public string ReplaceSpecialChars(string input)
        {
            // space -> _x0020_   特殊字元的替換
            // % -> _x0025_
            // # -> _x0023_
            // & -> _x0026_
            // / -> _x002F_
            if (input == null) return "";
            input = input.Replace(" ", "__");          
            return input;
        }

        //檔案命名字串替換
        public string ReplaceChars(string input)
        {
            if (input == null) return "";
            input = input.Replace(" ","_")
                .Replace(":","")
                .Replace("/","");

            return input;
        }