Excel到数据库的导入三部曲

发表于:2012-6-01 09:48

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:laner0515    来源:51Testing软件测试网采编

  前段时间考试系统要新添加一个功能,要把学生表的信息批量导入,也就是需要从excel中导入到数据库表,小女子不才,找了好长时间才解决。

  一、如果表是没有建立的,我们需要在数据库表中重新建立一个表盛放excel数据的时候:

  在sql server中的导入语句:

  SELECT * intocity2 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'DataSource="f:\test.xls";User ID=Admin;Password=;Extendedproperties=Excel 5.0')...[Sheet1$]

  这里需要注意的是,如果直接写这个语句,会出现这样的错误:

  SQL Server 阻止了对组件'Ad HocDistributed Queries' 的STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用sp_configure 启用'Ad Hoc Distributed Queries'。有关启用'Ad HocDistributed Queries' 的详细信息,请参阅SQL Server 联机丛书中的"外围应用配置器"。

  所以,我们这里需要启动服务:

  启动语句为:

execsp_configure 'show advanced options',1
reconfigure
execsp_configure 'Ad Hoc Distributed Queries',1
reconfigure

  当然,用完之后要记得关闭:

  关闭语句为:

execsp_configure 'Ad Hoc Distributed Queries',0
reconfigure
execsp_configure 'show advanced options',0
reconfigure

  因为考试系统是基于asp.net实现的,所以,一下是asp.net的实现代码,需要注意的是,因为语句中存在”,\等特殊符号,所以,我们需要使用转义字符来使这些特殊符号成为字符串类型,这里是一些常用的转义字符符号:http://baike.baidu.com/view/73.htm

   protectedvoid btntoLaad_Click(object sender, EventArgs e)
{
 
SqlConnectionmycon = new SqlConnection("server=.;database=qingniao;uid=sa;pwd=123");
string sqlstr = "SELECT * into cityFROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source=\"f:\\test.xls\";User ID=Admin;Password=;Extended properties=Excel5.0')...[Sheet1$]";
 
 
       SqlCommand cmd = new SqlCommand(sqlstr, mycon);
 
       mycon.Open();
 
       cmd.ExecuteNonQuery();
 
       mycon.Close();
}

  这样,数据库中会建立一个city表,来存储excel中的数据。

  二、将excel表导入到已经存在的数据库表

  这里需要注意的是,excel表中的数据必须要和数据库表中的数据一致

  比如,如果数据库表的字段为

  则相应的excel的表字段为:

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号