C#将gridcontrol中的数据导出到.csv文件

来源:互联网 发布:云课堂软件 编辑:程序博客网 时间:2024/05/16 13:53


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;
        }

0 0
原创粉丝点击