標籤:datagridview
眾所周知,DatagridView控制項來處理表各類資料真的是“簡單、方便、療效快”,因此備受廣大民眾喜愛。今天我們再來繼續探討一下有關它和Excel的“姊妹情深”。
幾乎沒有人不對Excel不瞭解,但要說熟悉和認識透徹恐怕我們還遠遠沒有做到(這是題外之言),重點還是Excel的強大資料處理能力帶給我們的便利,所以把DatagridView資料表變為老少皆宜的Excel表格就顯得尤為重要了。
其實這一轉換也很簡單,下面就為大家介紹下兩種方法,輕鬆串連“姊妹情”。
方法一:
這種方法不需要任何載入和引用,只是純程式碼,執行效率比較高。
Public Function ExportExcel(ByVal gvw As DataGridView) As Boolean '匯出到Excel函數 Try If gvw.Rows.Count <= 0 Then '判斷記錄數,如果沒有記錄就退出 MessageBox.Show("沒有記錄可以匯出", "沒有可以匯出的項目", MessageBoxButtons.OK, MessageBoxIcon.Information) Return False Else '如果有記錄就匯出到Excel Dim objCreateExcel As Object Dim objAddExcel As Object objCreateExcel = CreateObject("Excel.Application") '建立Excel對象 objAddExcel = objCreateExcel.workbooks.add() Dim intTitle As Integer Dim intRow As Integer Dim intColumn As Integer '定義迴圈變數,行列變數 '把表頭寫入Excel For intTitle = 0 To gvw.Columns.Count - 1 objAddExcel.worksheets(1).cells(1, intTitle + 1) = gvw.Columns(intTitle).HeaderCell.Value Next '用迴圈添加資料 For intRow = 0 To gvw.Rows.Count - 1 '行迴圈 For intColumn = 0 To gvw.Columns.Count - 1 '列迴圈 objAddExcel.worksheets(1).cells(intRow + 2, intColumn + 1) = gvw.Item(intColumn, intRow).Value.ToString Next Next objAddExcel.worksheets(1).Cells.EntireColumn.AutoFit() '自動調整Excel列 objCreateExcel.visible = True '設定Excel可見作為Excel工作表名稱 objAddExcel = Nothing '釋放資源 objCreateExcel = Nothing '釋放資源 End If Return True Catch ex As Exception '錯誤處理 MessageBox.Show(Err.Description.ToString, "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error) '出錯提示 Return False End Try End Function
方法二:需要引用.NET FrameWork程式集下的Office,但代碼較少,具體如下:
1、添加引用()
然後選擇
2、代碼
Imports Microsoft ‘添加引用Module mdlText Public Function ExportExcel(ByVal gvw As DataGridView) As Boolean '匯出到Excel函數 '建立Excel串連 Dim myExcel As New Microsoft.Office.Interop.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 gvw.ColumnCount - 1 myExcel.Cells(1, intTitle + 1) = gvw.Columns(intTitle).HeaderText Next intTitle '通過迴圈來添加控制項中的資料到表格中 For intRow = 0 To gvw.RowCount - 1 For intColumn = 0 To gvw.ColumnCount - 1 '由於第一行是表頭,所以添加資料時從第二行開始 myExcel.Cells(intRow + 2, intColumn + 1) = gvw(intColumn, intRow).Value.ToString Next intColumn Next intRow Return True '添加完畢,返回true End Function
EndModule
雖然和第一次做收費系統相比簡單了很多,但這個功能由於存在著普遍性和良好的通用性,還是需要我們認真對待。如何做到最大化的方便使用者使用才是我們的最終目標。