Excel和SQLserver数据互相存取
2015-08-25 21:52
316 查看
#region filed DataSet dataSet; #endregion #region Excel导出到DataBase /// <summary> ///从Excel中导入到到DataSet /// </summary> /// <param name="filePath">Excel文件路径</param> public void ImportToDataBase(string filePath) { GetExcelData(filePath); WriteToDataSet(); } /// <summary> ///从Excel中获取数据 /// </summary> /// <param name="filePath">Excel文件路径</param> void GetExcelData(string filePath) { string strCon = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source =" + filePath + ";" + " Extended Properties='Excel 8.0;HDR = Yes;IMEX = 2'"; string strSql = "select * from [Sheet1$]"; OleDbConnection oleDbConnection = new OleDbConnection(strCon); OleDbDataAdapter oleDbDataAdapter = new OleDbDataAdapter(strSql, oleDbConnection); dataSet = new DataSet(); oleDbConnection.Open(); oleDbDataAdapter.Fill(dataSet); oleDbConnection.Close(); dataSet=null; GC.Collect(); } /// <summary> /// 将dataSet中的数据写入到DataBase /// </summary> void WriteToDataSet() { StringBuilder strbSql = new StringBuilder(); string strCon = @"Data Source=PANLEE-PC\MSSQLSERVER_2;Initial Catalog=DBImage;Integrated Security=True"; SqlConnection sqlConnection = new SqlConnection(strCon); SqlCommand sqlCommand = new SqlCommand(); sqlCommand.Connection = sqlConnection; sqlConnection.Open(); try { string sqlCreate = @"Create Table Students( 学号 varchar(50), 姓名 varchar(50), 专业班级 varchar(50), 手机号码 varchar(50), )"; sqlCommand.CommandText = sqlCreate; sqlCommand.ExecuteNonQuery(); } catch { } for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++) { strbSql.Append("insert into Students(学号, 姓名, 专业班级, 手机号码) values('"); for (int j = 0; j < 3; j++) { strbSql.Append(dataSet.Tables[0].Rows[i].ItemArray[j].ToString() + "','"); } strbSql.Append(dataSet.Tables[0].Rows[i].ItemArray[3].ToString() + "')"); string strSql = strbSql.ToString(); sqlCommand.CommandText = strSql; sqlCommand.ExecuteNonQuery(); strbSql.Remove(0, strbSql.Length); } sqlConnection.Close(); } #endregion #region DataBase导出到Excel public void ImportToExcel(string SaveFileName) { GetDataBaseData(); CreateExcel(SaveFileName); WriteToExcel(SaveFileName); } /// <summary> ///从DataBase中获取数据到DataSet /// </summary> public void GetDataBaseData() { String strSql = "select * from Students"; string strCon = @"Data Source=PANLEE-PC\MSSQLSERVER_2;Initial Catalog=DBImage;Integrated Security=True"; SqlConnection sqlConnection = new SqlConnection(strCon); SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(strSql, strCon); dataSet = new DataSet(); sqlConnection.Open(); sqlDataAdapter.Fill(dataSet); sqlConnection.Close(); dataSet = null; GC.Collect(); } /// <summary> /// 创建Excel /// </summary> /// <param name="SaveFileName"></param> private void CreateExcel(string SaveFileName) { Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook wBook = excel.Application.Workbooks.Add(Missing.Value); excel.Visible = true; excel.DisplayAlerts = false; 4000 excel.AlertBeforeOverwriting = true; wBook.SaveAs(SaveFileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); wBook = null; excel.Quit(); excel = null; } /// <summary> /// 写入数据到Excel /// </summary> /// <param name="SaveFileName"></param> private void WriteToExcel(string SaveFileName) { string strCon = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source =" + SaveFileName + ";" + " Extended Properties='Excel 8.0;HDR = Yes;IMEX = 2'"; StringBuilder strbSql = new StringBuilder(); OleDbConnection oleDbConnection = new OleDbConnection(strCon); OleDbCommand oleDbCom = new OleDbCommand(); oleDbCom.Connection = oleDbConnection; oleDbConnection.Open();//学号, 姓名, 专业班级, 手机号码 string strSql = "create table Sheet1 (学号 char(50),姓名 char(50), 专业班级 char(50),手机号码 char(50)) "; oleDbCom.CommandText = strSql; oleDbCom.ExecuteNonQuery(); for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++) { strbSql.Append("insert into [Sheet1$] values('"); for (int j = 0; j < 3; j++) { strbSql.Append(dataSet.Tables[0].Rows[i].ItemArray[j].ToString() + "','"); } strbSql.Append(dataSet.Tables[0].Rows[i].ItemArray[3].ToString() + "')"); strSql = strbSql.ToString(); oleDbCom.CommandText = strSql; oleDbCom.ExecuteNonQuery(); strbSql.Remove(0, strbSql.Length); } oleDbConnection.Close(); } #endregion
相关文章推荐
- C# SQLserver数据库图片存取
- SQLServer触发器创建、删除、修改、查看
- Oracle Tablespace
- VB.NET中DataGridView删除指定数据行,并更新数据库
- 一步一步mysql(四)之 触发器与存储过程
- 详解SQL中的触发器
- 过滤文本文档中的数据并插入Cassandra数据库
- Oracle Profile
- 如何更好地管理你的数据库——navicat
- *Delphi使用ADO进行数据库编程
- (图解)MySQL 5.6 for Windows 解压缩版安装
- navicat连接oracle报错ORA-12737: Instant Client Light: unsupported server character set CHS16GBK”
- SQL Join —— 左联接、右联接、内联接等
- 数据库设计三大范式
- SQL
- Neo4j图数据库介绍
- SQL基本操作<学习笔记>
- MySQL合理利用锁机制优化
- 数据库存储过程
- iOS数据库的基本使用