DataGridView直接导出EXCEL


1.直接将DataGridView显示的内容导出Excel


public void DataToExcel(DataGridView m_DataView)

       {

           SaveFileDialog kk = new SaveFileDialog();

           kk.Title = "保存EXECL文件";

           kk.Filter = "EXECL文件(*.xls) |*.xls |所有文件(*.*) |*.*";

           kk.FilterIndex = 1;

           if (kk.ShowDialog() == DialogResult.OK)

           {

               string FileName = kk.FileName + ".xls";

               if (File.Exists(FileName))

                   File.Delete(FileName);

               FileStream objFileStream;

               StreamWriter objStreamWriter;

               string strLine = "";

               objFileStream = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write);

               objStreamWriter = new StreamWriter(objFileStream, System.Text.Encoding.Unicode);

               for (int i = 0; i  < m_DataView.Columns.Count; i++)

               {

                   if (m_DataView.Columns[i].Visible == true)

                   {

                       strLine = strLine + m_DataView.Columns[i].HeaderText.ToString() + Convert.ToChar(9);

                   }

               }

               objStreamWriter.WriteLine(strLine);

               strLine = "";


               for (int i = 0; i  < m_DataView.Rows.Count; i++)

               {

                   if (m_DataView.Columns[0].Visible == true)

                   {

                       if (m_DataView.Rows[i].Cells[0].Value == null)

                           strLine = strLine + " " + Convert.ToChar(9);

                       else

                           strLine = strLine + m_DataView.Rows[i].Cells[0].Value.ToString() + Convert.ToChar(9);

                   }

                   for (int j = 1; j  < m_DataView.Columns.Count; j++)

                   {

                       if (m_DataView.Columns[j].Visible == true)

                       {

                           if (m_DataView.Rows[i].Cells[j].Value == null)

                               strLine = strLine + " " + Convert.ToChar(9);

                           else

                           {

                               string rowstr = "";

                               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 = strLine + rowstr + Convert.ToChar(9);

                           }

                       }

                   }

                   objStreamWriter.WriteLine(strLine);

                   strLine = "";

               }

               objStreamWriter.Close();

               objFileStream.Close();

               MessageBox.Show(this,"保存EXCEL成功","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);

           }

       }


2.用DataGridView绑定的DataTable为参数,导出Excel


public void DataToExcel(DataTable m_DataTable)

       {

           SaveFileDialog kk = new SaveFileDialog();

           kk.Title = "保存EXECL文件";

           kk.Filter = "EXECL文件(*.xls) |*.xls |所有文件(*.*) |*.*";

           kk.FilterIndex = 1;

           if (kk.ShowDialog() == DialogResult.OK)

           {

               string FileName = kk.FileName + ".xls";

               if (File.Exists(FileName))

                   File.Delete(FileName);

               FileStream objFileStream;

               StreamWriter objStreamWriter;

               string strLine = "";

               objFileStream = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write);

               objStreamWriter = new StreamWriter(objFileStream, System.Text.Encoding.Unicode);

               for (int i = 0; i < m_DataTable.Columns.Count; i++)

               {

                   strLine = strLine + m_DataTable.Columns[i].Caption.ToString() + Convert.ToChar(9);

               }

               objStreamWriter.WriteLine(strLine);

               strLine = "";


               for (int i = 0; i < m_DataTable.Rows.Count; i++)

               {

                   for (int j = 0; j < m_DataTable.Columns.Count; j++)

                   {

                       if (m_DataTable.Rows[i].ItemArray[j] == null)

                           strLine = strLine + " " + Convert.ToChar(9);

                       else

                       {

                           string rowstr = "";

                           rowstr = m_DataTable.Rows[i].ItemArray[j].ToString();

                           if (rowstr.IndexOf("\r\n") > 0)

                               rowstr = rowstr.Replace("\r\n", " ");

                           if (rowstr.IndexOf("\t") > 0)

                               rowstr = rowstr.Replace("\t", " ");

                           strLine = strLine + rowstr + Convert.ToChar(9);

                       }

                   }

                   objStreamWriter.WriteLine(strLine);

                   strLine = "";

               }

               objStreamWriter.Close();

               objFileStream.Close();

               MessageBox.Show(this, "保存EXCEL成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

           }

       }