从DataGridView导出Excel

从DataGridView导出Excel的两种情况,不多说,直接记录代码(新建类,直接引用传入参数)。

 

using System; 

using System.Collections.Generic; 

using System.Linq; 

using System.Text; 

using System.Windows.Forms; 

using System.IO; 

using System.Data;

 

namespace cnblogs

{

    public static class LoadExcel

    {

      //从DataGridView中导出Excel,若s为null则直接导出DataGridView中的内容

        public static void DataToExcel(DataGridView m_DataView,string s)

        {

            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);

                objStreamWriter.WriteLine(s); //统计结果信息

 

                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("导出成功!");

            }

          

        }

 

 

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

 

        public static 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();

            }

        }

    }

}

 

posted @ 2014-11-07 17:17  逆之影  阅读(264)  评论(0编辑  收藏  举报