gridView数据导入到Excel

来源:互联网 发布:扫描枪没有数据 编辑:程序博客网 时间:2024/03/29 19:27

#region 导出信息(公共方法)   public void Export(DataGridView dgvExport,string strFileName,string strTips)
       
/// <summary>
       
/// 导出信息(公共方法)
       
/// </summary>
       
/// <param name="dgvExport">datagridview控件中的数据</param>
       
/// <param name="strFileName">文件名</param>
       
/// <param name="strTips">提示信息</param>
        public void Export(DataGridView dgvExport,string strFileName,string strTips)
        {
           
//判断控件中是否有数据
            if (dgvExport.Rows.Count > 0)
            {
               
//初始化导出对话框
                SaveFileDialog saveFileDialog = new SaveFileDialog();
                saveFileDialog.DefaultExt
= "xls";
                saveFileDialog.Filter
= "EXCEL文件(*.XLS)|*.xls";
                saveFileDialog.FilterIndex
= 0;
                saveFileDialog.FileName
= strFileName;
                saveFileDialog.RestoreDirectory
= true;
                saveFileDialog.CreatePrompt
= true;
                saveFileDialog.Title
= "导出到EXCEL";

               
//弹出保存文件的对话框
                saveFileDialog.ShowDialog();

               
//文件名为空的话,返回
                if (saveFileDialog.FileName == "")
                   
return;

               
//数据流声明
                Stream myStream;
                StreamWriter swOut;

               
//定义列名字符串
                string strColumnText;

               
//初始化对象
                myStream = saveFileDialog.OpenFile();
                swOut
= new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
                strColumnText
= "";

               
//若控件中有数据,则执行操作
                if (dgvExport.RowCount > 0)
                {
                   
//读取信息
                    try
                    {
                       
//初始化列
                        for (int i = 0; i < dgvExport.ColumnCount; i++)
                        {
                           
//只导出控件中可见的数据
                            if (dgvExport.Columns[i].Visible == true)
                            {
                               
if (i > 0)
                                {
                                   
//制表符
                                    strColumnText += "/t";
                                }
                               
//获取列名字符串作为Excel文件中的列名
                                strColumnText += dgvExport.Columns[i].HeaderText;
                            }
                        }

                       
//输出strColumnText
                        swOut.WriteLine(strColumnText);

                       
//读取每一条数据的内容
                        for (int j = 0; j < dgvExport.Rows.Count; j++)
                        {
                           
string tempStr = "";
                           
for (int k = 0; k < dgvExport.Columns.Count; k++)
                            {
                               
//只导出控件中可见的数据
                                if (dgvExport.Columns[k].Visible == true)
                                {
                                   
if (k > 0)
                                    {
                                       
//制表符
                                        tempStr += "/t";
                                    }
                                   
//获取控件中非空单元格中的信息
                                    if(dgvExport.Rows[j].Cells[k].Value!=null)
                                        tempStr
+= dgvExport.Rows[j].Cells[k].Value.ToString();
                                }
                             }
                           
                            
//输出信息
                             swOut.WriteLine(tempStr);
                         }
                      
                      }

                    
//捕获异常
                     catch (Exception ex)
                     {
                         MessageBox.Show(ex.ToString());
                     }

                    
finally
                     {
                        
//关闭数据流
                         swOut.Close();
                         myStream.Close();
                     }
                 }
            }

           
//控件中没有信息,给出提示
            else
            {
                MessageBox.Show(strTips,
"操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
       
#endregion