本期概述
上一期我们学习了用户分类,通过给用户分配不同的功能权限(管理员具有所有功能的使用权限,普通用户只能限制性的使用部分功能)达到给用户分类的目的.那么这一期我们来一起学习下一个信息管理系统最为重要的功能之一数据备份.
原理
这个系统我们使用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