本期概述
上一期我們學習了用戶分類,通過給用戶分配不同的功能權限(管理員具有所有功能的使用權限,普通用戶只能限制性的使用部分功能)達到給用戶分類的目的.那么這一期我們來一起學習下一個信息管理系統最為重要的功能之一數據備份.
原理
這個系統我們使用Excel文件來備份數據,主要由於它的內容結構跟DataGridView十分相似,而微軟也提供了十分強大的技術支持(通過引用Microsoft.Office.Interop.Excel程序集),使得我們能夠非常容易的將DataGridView數據導入到Excel表格中.主要原理:通過遍歷DataGridView中所有的單元格,然后將里面的數據一一對應的填補到Excel表格中,從而完成整個數據的備份操作.
界面設計
首先,我們在管理界面 FrmManager 增加一個導出Excel按鈕 Name:btnExportExcel 如下圖
接下來,我們需要在程序里添加一個Microsoft.Office.Interop.Excel程序集的引用.
選擇.net項 ,選擇添加Microsoft.Office.Interop.Excel,然后點確定(這里用的是12.0.0.0版本 導出的Excel文件是07版本).
然后在 FrmManager.cs 類里使用其命名空間.
using Microsoft.Office.Interop.Excel;
代碼實施
接下來,我們便可以開始寫代碼了,我們在原程序代碼后面插入如下代碼片段.
//導出為Excel文件 public void ExportExcel(DataGridView dgv) { try { //首先判斷 DataGridView里面是否有內容 沒內容則彈出提示並不再執行 if (dgv.Rows.Count == 0) { MessageBox.Show("沒數據可導出,請插入數據!"); return; } //首先我們需要創建一個Excel對象 Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); excel.Application.Workbooks.Add(true); //給Excel 對象 添加一個Excel Workbooks //生成Excel的 列頭名稱 for (int i = 0; i < dgv.ColumnCount; i++) { excel.Cells[1, i + 1] = dgvManager.Columns[i].HeaderText.ToString(); } //遍歷所有行 for (int i = 0; i < dgv.RowCount - 1; i++) { //遍歷每一行的中的所有列 從而實現所有單元格的遍歷 for (int j = 0; j < dgv.ColumnCount; j++) { excel.Cells[i + 2, j + 1] = dgv[j, i].Value.ToString(); } } excel.DisplayAlerts = false; excel.AlertBeforeOverwriting = false; excel.Save("excel.xls"); MessageBox.Show("導出Excel成功!"); excel.Quit();//關閉Excel進程 excel = null; } catch (Exception e) { MessageBox.Show(e.Message); } } private void btnExportExcel_Click(object sender, EventArgs e) { //調用 ExportExcel方法 導出DataGridView 的內容到Excel ExportExcel(dgvManager); }
運行查看
代碼寫好后,我們來運行測試下.
來到主界面,點 管理界面 按鈕.
然后單擊 導出Excel 按鈕
這時彈出一個 另存為 窗口,輸入你要保存的文件名(比如我這里的文件名為 導出的Excel) 然后點 保存.
系統提示 導出Excel成功!
我們來打開 導出的Excel 文件查看其數據是否成功導出,數據顯示導出成功. :)
這樣我們的數據備份就做好了;在下一期我們將共同來學習下數據恢復(將備份出來的Excel文件重新導入到Sql Server數據庫中並同時在DataGridView上顯示出來).
附上源代碼
MovieRecordManagementSystem08.zip