C#实现Excel数据导入数据库教程

需积分: 10 4 下载量 92 浏览量 更新于2024-07-27 1 收藏 121KB DOC 举报
“C#将Excel上传到数据库表的标准源代码实现” 在C#编程中,将Excel数据导入到数据库表是一项常见的任务,特别是在处理大量数据时。本示例提供了标准的源代码,用于实现这一功能。以下是对这个过程的详细说明: 首先,为了操作Excel文件,我们需要引入相关的命名空间: ```csharp using System.Data; using System.Data.OleDb; using System.IO; using System.Text; ``` 在`Page_Load`事件处理程序中,我们可以调用`ExcelToDS`方法,该方法接收Excel文件路径作为参数。这个方法负责读取Excel文件并将其内容转换为DataSet对象,然后将数据插入到数据库中。 `ExcelToDS`方法的主体如下: 1. 定义Excel工作表名称(例如,`strSheetName = "sheet1"`)和连接字符串(`strConn`)。连接字符串使用了`Microsoft.Jet.OLEDB.4.0`提供程序,适用于较旧的Excel文件(.xls),并且指定了`HDR=Yes`(表示第一行是列名)和`IMEX=1`(用于处理混合数据类型)。 2. 使用连接字符串创建一个`OleDbConnection`对象,并打开连接。 3. 构造SQL查询,从指定的工作表中选择所有数据(`strExcel = "select * from [" + strSheetName + "$]"`)。 4. 创建一个`OleDbDataAdapter`对象,使用SQL查询和连接,填充一个新创建的`DataSet`对象。 5. 关闭数据库连接。 6. 将数据绑定到`GridView1`控件,用于显示数据(如果需要的话)。 7. 计算并显示数据行数(`Label1.Text = ds.Tables[0].Rows.Count.ToString();`)。 接下来,为了将数据插入到数据库,我们创建一个`SqlAccess.Sqldatabase`类的实例(假设这是自定义的数据库访问类),并使用`StringBuilder`构建一个SQL插入语句的字符串。遍历`DataSet`中的每一行,将每行的数据拼接到SQL语句中。请注意,这只是一个基本示例,实际应用中可能需要进行错误处理和参数化查询,以防止SQL注入攻击。 例如: ```csharp for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { sb.Append("insert into data values('") .Append(ds.Tables[0].Rows[i]["companyname"]).Append("', '") .Append(ds.Tables[0].Rows[i]["telname"]).Append("', '") .Append(ds.Tables[0].Rows[i]["qytel"]).Append("', '") .Append(ds.Tables[0].Rows[i]["fax"]).Append("')"); // 注意:这里假设"fax"是最后一列 } // 然后执行SQL插入语句 sql.ExecuteBatch(sb.ToString()); ``` 最后,通过`SqlAccess.Sqldatabase`类的`ExecuteBatch`方法执行批量插入,将数据插入到名为"data"的数据库表中。 这个例子展示了如何使用C#和ADO.NET将Excel数据加载到数据库,但请注意,这种方法不适用于Excel 2007及更高版本的.xlsx文件,因为它们需要使用不同的连接字符串和提供程序(如`Microsoft.ACE.OLEDB.12.0`)。此外,为了提高性能和安全性,建议使用参数化查询或Entity Framework等ORM工具来处理数据库操作。