DataGridView導出數據到Excel及單元格格式的改動
阿新 • • 發佈:2017-06-29
找到 popu 過程 卡號 文本 控件 什麽 ng- csdn
點擊button調用
O(∩_∩)O~大致上就是這樣了,可是仍有一些細節須要註意
解決方式再思考:依照上述方法,會把全部的單元格都變成了文本格式,並不一定滿足全部情況,於是,須要找到數據所在列了。僅僅在這一列內容的前面加“ ’ ” 即可了。
在軟件開發過程中,時常會遇到把一些數據信息從DataGridView中導出到Excel表格中的情況。假設寫的多了就會發現挺簡單的,我們最好還是來寫一寫,留作備用,畢竟有時候Ctrl+C和Ctrl+V還是比較方便的。
思路非常easy。寫一個Module,然後調用:
Module代碼例如以下:
<span style="font-family:Times New Roman;font-size:18px;">‘********************************************** ‘ 文 件 名:LeadToExcel ‘ 命名空間:UI ‘ 功 能:將DataGridView中的數據導出到Excel表中 ‘ 作 者:郝貴寶 ‘ 生成日期:2014/8/23 10:55:54 ‘ 版 本 號:V1.0.0.0 ‘ 改動日誌: ‘ 版權說明: ‘*********************************************** Imports Microsoft.Office.Interop ‘加入對Office的引用 Module LeadToExcel Function LeadToExcel(ByVal dgv As DataGridView) As Boolean ‘導出為Excel函數 ‘建立Excel連接 Dim myExcel As New Excel.Application() myExcel.Application.Workbooks.Add(True) myExcel.Visible = True ‘定義循環變量,行,列變量 Dim intRow As Integer Dim intColumn As Integer Dim intTitle As Integer ‘加入表頭 For intTitle = 0 To dgv.ColumnCount - 1 myExcel.Cells(1, intTitle + 1) = dgv.Columns(intTitle).HeaderText Next intTitle ‘通過循環來加入控件中的數據到表格中 For intRow = 0 To dgv.RowCount - 1 For intColumn = 0 To dgv.ColumnCount - 1 ‘因為第一行是表頭,所以加入數據時: ‘Excel中從第二行,第一列(2,1)開始賦值。 ‘DataGridView從第一行,第一列(0。0)開始賦值(index 從0,0開始) myExcel.Cells(intRow + 2, intColumn + 1) = dgv(intColumn, intRow).Value.ToString Next intColumn Next intRow Return True ‘加入完成,返回true End Function End Module</span>
點擊button調用
<span style="font-family:Times New Roman;font-size:18px;"> Private Sub btnLeadExcel_Click(sender As Object, e As EventArgs) Handles btnLeadExcel.Click Call LeadToExcel.LeadToExcel(DataGridView1) End Sub</span>
O(∩_∩)O~大致上就是這樣了,可是仍有一些細節須要註意
問題緣由:假設你在DataGridView中顯示的有數字,且數字以0開頭,則導出Excel後0消失了。(比方某卡號為001,導出後顯示為1)
假設細致想想就會明確。Excel中數字的格式默覺得常規(常規單元格格式不包括不論什麽特定的數字格式),所以數字前面的 0 會被去掉。
解決方式:在LeadToExcel模塊中,賦值時在數據前加上" ’ " 變為文本格式就可以,例如以下:
<span style="font-family:Times New Roman;font-size:18px;"> ‘通過循環來加入控件中的數據到表格中 For intRow = 0 To dgv.RowCount - 1 For intColumn = 0 To dgv.ColumnCount - 1 ‘因為第一行是表頭。所以加入數據時: ‘Excel中從第二行,第一列(2。1)開始賦值。 ‘DataGridView從第一行。第一列(0。0)開始賦值(index 從0,0開始) myExcel.Cells(intRow + 2, intColumn + 1) = "‘" + dgv(intColumn, intRow).Value.ToString Next intColumn Next intRow</span>
解決方式再思考:依照上述方法,會把全部的單元格都變成了文本格式,並不一定滿足全部情況,於是,須要找到數據所在列了。僅僅在這一列內容的前面加“ ’ ” 即可了。
舉一反三:日期。時間,貨幣的格式轉換都能夠依照這個思路來解決。
再領悟:假設當初在設計數據庫或寫實體時就能考慮到這些情況,而做出適當改變,也許後面的這些問題就不會產生了。(ps:還會遇到其它新的問題,呵呵,這些都須要日後不斷的積累經驗吧)
DataGridView導出數據到Excel及單元格格式的改動