dataGridView导出为CSV文件

如下:

    public class Export
    {
        public void dataGridViewToCSV(DataGridView dataGridView)
        {
            if (dataGridView.Rows.Count == 0)
            {
                MessageBox.Show("没有数据可导出!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            
            }

            Thread t = new Thread((ThreadStart)(() =>
                    {
                        SaveFileDialog saveFileDialog = new SaveFileDialog();
                        saveFileDialog.Filter = "CSV files (*.csv)|*.csv";
                        saveFileDialog.FilterIndex = 0;
                        saveFileDialog.RestoreDirectory = true;
                        saveFileDialog.CreatePrompt = true;
                        saveFileDialog.FileName = null;
                        saveFileDialog.Title = "保存";
                        if (saveFileDialog.ShowDialog() == DialogResult.OK)
                        {
                            Stream stream = saveFileDialog.OpenFile();
                            StreamWriter sw = new StreamWriter(stream, System.Text.Encoding.GetEncoding(-0));
                            string strLine = "";
                            try
                            {
                                //表头
                                for (int i = 0; i < dataGridView.ColumnCount; i++)
                                {
                                    if (i > 0)
                                        strLine += ",";
                                    strLine += dataGridView.Columns[i].HeaderText;
                                }
                                strLine.Remove(strLine.Length - 1);
                                sw.WriteLine(strLine);
                                strLine = "";
                                //表的内容
                                for (int j = 0; j < dataGridView.Rows.Count; j++)
                                {
                                    strLine = "";
                                    int colCount = dataGridView.Columns.Count;
                                    for (int k = 0; k < colCount; k++)
                                    {
                                        if (k > 0 && k < colCount)
                                            strLine += ",";
                                        if (dataGridView.Rows[j].Cells[k].Value == null)
                                            strLine += "";
                                        else
                                        {
                                            string cell = dataGridView.Rows[j].Cells[k].Value.ToString().Trim();
                                            //防止里面含有特殊符号
                                            cell = cell.Replace("\"", "\"\"");
                                            cell = "\"" + cell + "\"";
                                            strLine += cell;
                                        }
                                    }
                                    sw.WriteLine(strLine);
                                }
                                sw.Close();
                                stream.Close();
                                MessageBox.Show("数据被导出到:" + saveFileDialog.FileName.ToString(), "导出完毕", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show(ex.Message, "导出错误", MessageBoxButtons.OK, MessageBoxIcon.Information);
                               // return false;
                            }
                        }
                    }

                   ));
            t.SetApartmentState(ApartmentState.STA);
            t.Start();
            t.Join();
       
        }
          
    }

  

猜你喜欢

转载自www.cnblogs.com/tiancaige/p/12941786.html