今天寫一個導出到Excel表的東西,之前也寫過,以前導出都是將界面上的DataGridView中數據導出,沒有任何問題,然而今天的導出場景是在界面是點擊導出按鈕,直接在數據庫中查詢符合條件的數據導出,不須要顯示在界面上。數據庫
本文如有出入,請指正——來自小渣渣的顫抖
客官可移步小站查看本文http://fanjiajia.cn/2019/07/08/Cplusplus/flx1/this
直接看解決
便可debug
由於項目中有公用的導出方法,只須要傳遞一個DataGridView參數便可,因此確定是將查出來的DataTable轉成一個DataGridView,之前都是直接在WinForm中拖,如今確定是直接new一個。code
// 新建一個DataGridView對象 DataGridView dgv = new DataGridView(); // 添加列 DataGridViewTextBoxColumn col_HTBH = new DataGridViewTextBoxColumn(); col_HTBH.Name = "ZXHTBH"; col_HTBH.DataPropertyName = "ZXHTBH"; col_HTBH.HeaderText = "合同編號"; dgv.Columns.Add(col_HTBH); ...... // 查詢導出數據 DataTable dt = BLL.YardSystem.DC.QueryQKHWXX(); // 爲dgv設置數據源 dgv.DataSource = dt; // 導出數據 .......
按照上面的邏輯,new的dgv,添加的列設置了列名稱,列的DataPropertyName
,設置了該屬性就能實現DataTable中對應的列匹配上。orm
作好了上面的工做,第一次運行,導出成功後,查看Excel表,沒有數據,除了每一列的名稱,debug,DataTable確實有數據,dgv的DataSource也有數據,然而卻發現它的RowsCount爲0,What。RowsCount爲0。對象
一通搗騰,有人說綁定了可是沒有填充,也有人說循環爲一行賦值,一看就以爲low,最後看到一個哥們說把dgv添加到Controls裏面,當時我還鬱悶,我又不須要他顯示,加進去幹啥,然而就是這個不知道幹啥起做用了。get
this.Controls.Add(dgv);
Perfect,搞定,也不知道爲何,就是須要作這樣一個操做。class
此致,敬禮循環