乐趣区

关于c#:winform数据导出CSV

winform 数据导出 CSV

.csv 是一种逗号分隔值文件格式,其文件以纯文本模式存储表格数据(数字和文本)。CSV 文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。

/// <summary>
/// 数据导出
/// </summary>
/// <param name="dataGridView"></param>
/// <returns></returns>
private bool dataGridViewToCSV(DataGridView dataGridView)
{if(dataGridView.Rows.Count == 0)
    {MessageBox.Show("没有数据可导出!", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information);
        return false;
    }
    SaveFileDialog saveFileDialog = new SaveFileDialog();
    saveFileDialog.Filter = "CSV files (*.csv)|*.csv";
    saveFileDialog.FilterIndex = 0;
    saveFileDialog.RestoreDirectory = true;
    saveFileDialog.CreatePrompt = true;
    saveFileDialog.FileName = null;
    saveFileDialog.Title = "保留";
    DateTime now = DateTime.Now;
    saveFileDialog.FileName = now.Year.ToString().PadLeft(2) + now.Month.ToString().PadLeft(2, '0') + now.Day.ToString().PadLeft(2, '0') + "-" + now.Hour.ToString().PadLeft(2, '0') + now.Minute.ToString().PadLeft(2, '0') + now.Second.ToString().PadLeft(2, '0');
    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;
        }
    }
    return true;
}
退出移动版