利用DataGridView及Excel实现数据的导入导出备份

一、导出DataGridView 的内容到Excel 
private void btnExportExcel_Click(object sender, EventArgs e)  
{  
    //调用 ExportExcel方法 导出DataGridView 的内容到Excel  
    ExportExcel(dgvManager);  
}  
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);  
    }  
}  

二、将Excel 导入到DataGridView
private void btnImportExcel_Click(object sender, EventArgs e)  
{  
    //选择需要导入的Excel文件  
    OpenFileDialog ofDialog = new OpenFileDialog();  
    ofDialog.Title = "请选择需要导入的Excel文件";  
    ofDialog.Filter = "Excel Files(07版本 *.xlsx)|*.xlsx|(03版本 *.xls)|*.xls|所有文件(*.*)|*.*";  
    string fullPath = string.Empty;  
    if (ofDialog.ShowDialog() == DialogResult.OK)  
    {  
      fullPath = ofDialog.FileName;   
    }  
    if (fullPath == "")   
    {  
      MessageBox.Show("未选择Excel文件");  
      return;  
    }  
    //调用导入 Excel文件方法   
    ImportExcel(fullPath, dgvManager);  
}  
using System.Data.OleDb;
public void ImportExcel(String filePath, DataGridView dgv)  
{  
    /**************①打开Excel文件 并读取里面的数据 
    //根据路径打开一个Excel文件并将数据填充到DataSet中 以便 Sql Server 执行数据插入语句时 调用  
    //03版本 Excel 连接字符串 如果用03版本 连接字符串 打开07版本的Excel 会提示报错 "外部表不是预期的格式"  
    //string connExcel = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + filePath + ";Extended Properties ='Excel 8.0;'";  
    //07版本 Excel 连接字符串  这里使用07版本的 兼容03版本  
    string connExcel = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = " + filePath + ";Extended Properties ='Excel 8.0;'";  
    OleDbConnection OleDbConn;  
    try  
    {  
        //创建OleDbConn连接   
        OleDbConn = new OleDbConnection(connExcel);  
        OleDbConn.Open();  
        //创建 Excel 数据表  
        Microsoft.Office.Interop.Excel.DataTable dtExcel = OleDbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);  
        //获取Excel表  
        string tableName = dtExcel.Rows[0][2].ToString().Trim();  
        tableName = "[" + tableName.Replace("'", "") + "]";  
        string queryExcel = "select 电影名称,导演,发行日期 from " + tableName;  
        //创建数据集ds  用于后期装载 OleDbDataAdapter 中的获取的结果  
        DataSet ds = new DataSet();  
        OleDbDataAdapter oleAdapter = new OleDbDataAdapter(queryExcel, connExcel);  
        oleAdapter.Fill(ds, "Record");  
        OleDbConn.Close();  
        /*************************** ①Excel文件数据读取完成  ***********************************************/  
        /**************************  ②获取Excel数据后,将数据导入到Sql Server ********************************/  
        string sqlInsert = null; //初始化sql 查询语句   
        int n = 0;    //定义一个整数 用于获取  ExecuteNonQuery()成功执行的行数   
        //遍历 ds数据集中的 Record表里的所有行  
        foreach (DataRow dr in ds.Tables["Record"].Rows)  
        {  
            //创建插入语句  
            sqlInsert = "insert into Record(Movie_Name,Movie_Director,Date_Released) values('";  
            //每行有3个字段  电影名称,导演 和 发行日期  
            sqlInsert += dr.ItemArray[0] + "','";  
            sqlInsert += dr.ItemArray[1] + "','";  
            sqlInsert += dr.ItemArray[2] + "')";  
            SqlConnection conn = new SqlConnection(connStr);  
            SqlCommand cmd = new SqlCommand(sqlInsert, conn);  
            conn.Open();  
            n += cmd.ExecuteNonQuery();  //每次成功 +1  
            conn.Close();  
        }  
        //如果 n> 0  表示数据插入成功  
        if (n > 0)  
        {  
            MessageBox.Show("添加成功! 共插入" + n.ToString() + "条数据");  
        }  
        else //否则失败  
        {  
            MessageBox.Show("添加失败!");  
            return;  
        }  
        /**************************  ②数据导入到Sql Server完成 **********************************************/  
        //调用refresh方法,在添加完成数据后 自动刷新DataGridView表 显示新数据  
        Refresh();  
    }  
    catch (Exception e)  
    {  
        //在整个过程中 如果出错的话 显示错误信息  
        MessageBox.Show(e.Message, "错误消息");  
    }  
}  

你可能感兴趣的:(sql,exception,String,server,properties,Excel,dataset)