### 数据GridView导出至Excel知识点详解 在软件开发过程中,数据导出功能是十分常见的需求之一,特别是将数据显示在DataGridView控件中的数据导出到Excel文件。本文将深入解析如何利用C#语言实现这一功能,并对提供的代码进行详细解读。 #### 一、DataGridView直接导出至Excel 该方法通过遍历DataGridView中的所有可见列与行,将其转换为文本格式存储到Excel文件中。 ##### 1.1 创建保存对话框 ```csharp SaveFileDialog kk = new SaveFileDialog(); kk.Title = "EXECL 文件"; kk.Filter = "EXCEL 文件 (*.xls) | *.xls | 文件 (*.*) | *.*"; kk.FilterIndex = 1; ``` 这里首先创建了一个`SaveFileDialog`对象用于打开保存文件的对话框,设置其标题为“EXCEL 文件”,过滤器只显示Excel文件(*.xls)和所有文件(*.*)。默认选中Excel文件。 ##### 1.2 文件操作 当用户选择好保存路径后,程序会根据选择的文件名创建或覆盖已存在的同名文件,并打开文件流进行写入操作。 ```csharp string FileName = kk.FileName + ".xls"; if (File.Exists(FileName)) File.Delete(FileName); FileStream objFileStream; StreamWriter objStreamWriter; objFileStream = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write); objStreamWriter = new StreamWriter(objFileStream, System.Text.Encoding.Unicode); ``` 如果文件已经存在,则先删除原有文件,再创建一个新的文件流和文本写入流对象,准备写入数据。 ##### 1.3 写入表头 ```csharp string strLine = ""; for (int i = 0; i < m_DataView.Columns.Count; i++) { if (m_DataView.Columns[i].Visible == true) { strLine += m_DataView.Columns[i].HeaderText.ToString() + Convert.ToChar(9); // Tab键分隔 } } objStreamWriter.WriteLine(strLine); strLine = ""; ``` 遍历DataGridView的所有可见列,并将列标题按Tab键分隔存储到字符串中,然后写入文件。 ##### 1.4 写入数据 ```csharp for (int i = 0; i < m_DataView.Rows.Count; i++) { strLine = ""; for (int j = 0; j < m_DataView.Columns.Count; j++) { if (m_DataView.Columns[j].Visible == true) { string rowStr = ""; if (m_DataView.Rows[i].Cells[j].Value == null) strLine += "" + Convert.ToChar(9); else { rowStr = m_DataView.Rows[i].Cells[j].Value.ToString(); if (rowStr.IndexOf("\r\n") > 0) rowStr = rowStr.Replace("\r\n", ""); if (rowStr.IndexOf("\t") > 0) rowStr = rowStr.Replace("\t", ""); strLine += rowStr + Convert.ToChar(9); } } } objStreamWriter.WriteLine(strLine); strLine = ""; } objStreamWriter.Close(); objFileStream.Close(); ``` 接下来,遍历所有行与列,获取每个单元格的数据值,对于空单元格则用空字符串加Tab键表示。对于非空单元格,先将数据转换为字符串,再去除其中可能包含的换行符和制表符,然后加上Tab键分隔,最后写入文件。完成后关闭文件流。 ##### 1.5 完成提示 ```csharp MessageBox.Show(this, "Excel 导出成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); ``` 弹出消息框提示用户Excel文件导出成功。 #### 二、通过DataTable导出至Excel 此部分代码与第一部分类似,不同之处在于它是基于DataTable对象来导出Excel文件。 ```csharp public void DataToExcel(DataTable m_DataTable) { // ...(省略了与第一部分相同的代码) // 写入表头 string strLine = ""; for (int i = 0; i < m_DataTable.Columns.Count; i++) { strLine += m_DataTable.Columns[i].ColumnName + Convert.ToChar(9); } objStreamWriter.WriteLine(strLine); strLine = ""; // 写入数据 foreach (DataRow row in m_DataTable.Rows) { strLine = ""; for (int i = 0; i < m_DataTable.Columns.Count; i++) { string rowStr = ""; if (row[i] == DBNull.Value) strLine += "" + Convert.ToChar(9); else { rowStr = row[i].ToString(); if (rowStr.IndexOf("\r\n") > 0) rowStr = rowStr.Replace("\r\n", ""); if (rowStr.IndexOf("\t") > 0) rowStr = rowStr.Replace("\t", ""); strLine += rowStr + Convert.ToChar(9); } } objStreamWriter.WriteLine(strLine); strLine = ""; } objStreamWriter.Close(); objFileStream.Close(); MessageBox.Show(this, "Excel 导出成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } ``` 这部分代码同样是创建保存对话框并打开文件流,然后遍历DataTable的列名写入表头,接着遍历每一行数据,处理数据中的特殊字符,最终写入文件。 #### 小结 以上两部分代码分别展示了如何将DataGridView和DataTable中的数据导出到Excel文件的方法。需要注意的是,这里采用的是简单的文本格式来模拟Excel文件,而不是真正的Excel文件格式。这种方法的优点是简单易实现,适用于数据量不大且不需要复杂格式的情况。如果需要更复杂的格式化或者数据量较大时,建议使用专门的Excel操作库如EPPlus等。




















1.直接将DataGridView显示的内容导出Excel
1public void DataToExcel(DataGridView m_DataView)
2 {
3 SaveFileDialog kk = new SaveFileDialog();
4 kk.Title = "保存EXECL文件";
5 kk.Filter = "EXECL文件(*.xls) |*.xls |所有文件(*.*) |*.*";
6 kk.FilterIndex = 1;
7 if (kk.ShowDialog() == DialogResult.OK)
8 {
9 string FileName = kk.FileName + ".xls";
10 if (File.Exists(FileName))
11 File.Delete(FileName);
12 FileStream objFileStream;
13 StreamWriter objStreamWriter;
14 string strLine = "";
15 objFileStream = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write);
16 objStreamWriter = new StreamWriter(objFileStream, System.Text.Encoding.Unicode);
17 for (int i = 0; i < m_DataView.Columns.Count; i++)
18 {
19 if (m_DataView.Columns[i].Visible == true)
20 {
21 strLine = strLine + m_DataView.Columns[i].HeaderText.ToString() + Convert.ToChar(9);
22 }
23 }
24 objStreamWriter.WriteLine(strLine);
25 strLine = "";
26


- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 智慧城市运维方案PPT课件.pptx
- 超市内的数据挖掘应用.doc
- 计算机的认识实习报告.doc
- 数据仓库与数据挖掘分类规则.doc
- 基于Proteus的单片机控制电子时钟电路设计与仿真.doc
- 网络空间安全学科硕士研究生培养方案哈工大计算机学院哈尔滨.doc
- 课后作业--第二课-第一课时-网络改变世界.ppt
- 互联网心得体会及感受.doc
- 管理系统中计算机应用.docx
- 基于单片机多路数据采集系统.doc
- 基于因果网络的多故障诊断系统.pdf
- 网络营销系统及其实现.pptx
- 什么是成对编程.PPT
- 2022年云南省计算机一级B类考试上机考试归纳.doc
- 电子商务模式下的网络营销渠道.pdf
- 数据库的查询方法.ppt


