C#中dategridview數據導出為excel文件


先從數據庫中獲取數據,綁定在datagridview中,再從dategridview中導出為excel文件

1、新建窗體,把控件datagridview和按鈕設置好,如圖

2、設置datagridview綁定數據表的字段

1)點擊datagriview右上角,彈出編輯列,添加列

2)點擊添加列,新建數據,跟數據庫中數據表的列名一樣

 

3、獲取數據庫中數據表的方法

   SqlConnection conn = null;
        /// <summary>
        /// 查詢事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSelect_Click(object sender, EventArgs e)
        {
            conn = DBHelp.GetConnection();  //獲取數據庫連接,並開啟連接
            string sql = "select * from UseTab";   //查詢數據表的 sql語句
            DataSet ds = new DataSet();
            SqlDataAdapter sda = new SqlDataAdapter(sql,conn);
            sda.Fill(ds);
            DataTable dt = ds.Tables[0];   //獲取數據表的數據
            this.dgvUseName.DataSource = dt;  //把dattable綁定datagridview
            DBHelp.CloseConnection(conn);   //關閉連接
            //選擇整行顯示數據
            this.dgvUseName.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
           //選擇是否只讀
            this.dgvUseName.ReadOnly = true;
        }

4、導出為excel文件的方法

        private void btnExport_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.Filter = "Excel files (*.xls)|*.xls";
            saveFileDialog.FilterIndex = 0;
            saveFileDialog.RestoreDirectory = true;
            saveFileDialog.CreatePrompt = true;
            saveFileDialog.Title = "導出Excel文件到";

            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');
            saveFileDialog.ShowDialog();
 
            Stream myStream = saveFileDialog.OpenFile();
            StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
            string str = "";
            try
            {
                //寫標題     
                for (int i = 0; i < this.dgvUseName.ColumnCount; i++)
                {
                    if (i > 0)
                    {
                        str += "\t";
                    }
                    str += this.dgvUseName.Columns[i].HeaderText;
                }
                sw.WriteLine(str);
                 //寫內容   
                for (int j = 0; j < this.dgvUseName.Rows.Count; j++)
                {
                    string tempStr = "";
                    for (int k = 0; k < this.dgvUseName.Columns.Count; k++)
                    {
                        if (k > 0)
                        {
                            tempStr += "\t";
                        }
                        tempStr += this.dgvUseName.Rows[j].Cells[k].Value.ToString();
                    }
                    sw.WriteLine(tempStr);
                }
                sw.Close();
                myStream.Close();
            }
            catch (Exception ex)
            {
                //MessageBox.Show(ex.ToString());
            }
            finally
            {
                sw.Close();
                myStream.Close();
            }
        }

5、數據庫輔助類

 class DBHelp
    {
        //連接字符串
        static String str = "server=.;database=TestDB;uid=sa;pwd=sa";
        static SqlConnection conn = null;
        static SqlCommand cmd = null;
        static int result=0;
       
        /// <summary>
        /// 獲取可用連接
        /// </summary>
        /// <returns>數據庫連接對象</returns>
        public static SqlConnection GetConnection() {
            conn = new SqlConnection(str);
            conn.Open();
            return conn;
        }
        /// <summary>
        /// 關閉連接對象
        /// </summary>
        /// <param name="conn">連接對象</param>
        public static void CloseConnection(SqlConnection conn) {
            if (conn != null && conn.State == System.Data.ConnectionState.Open) {
                conn.Close();
            }    
        }

}

6、最后導出的效果圖

保存時,彈出的窗體

打開excel文件查看數據

參考的導出方法來自這個地址:http://www.cnblogs.com/hfzsjz/archive/2013/05/07/3064231.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM