ASP.NET数据导入之实现Excel to MSSQL
创始人
2024-04-24 19:01:05
0次

ASP.NET数据导入之实现Excel to MSSQL的过程是什么呢?需要注意什么呢?

做网站项目时,可能会遇到将Excel文件中的ASP.NET数据导入至SQL Server数据库的需求,把Excel也看作数据库,使用OleDb连接后读取数据然后写入用SqlClient连接的SQL Server数据库即可,技术上没有什么难度。

但是需要考虑的一个问题是,系统安装的环境一般是专用sql server服务器+web服务器+客户端,而Excel文件往往在客户端导入,如果直接使用SQL语句读取的话,由于SQL在web服务器上运行,不能读取到客户端的Excel地址,就会出错了。

既然知道了错误的原因,解决方案也就有了:

1、把客户端的Excel上传至web服务器上某文件夹,注意要给该文件夹设置网络用户的“写入”权限;

2、使用OleDb+sql语句读取web服务器上的Excel文件

3、将读取的ASP.NET数据导入到SQL Server 数据库

4、将web服务器上的临时Excel删除

部分代码如下:

  1. string filename = FileUpload1.PostedFile.FileName.Substring(FileUpload1.PostedFile.FileName.LastIndexOf("\\"));  
  2. FileUpload1.PostedFile.SaveAs(Server.MapPath("fileupload\\")  + filename);//上传文件  
  3.  
  4. string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + 
  5. Server.MapPath("fileupload\\") +  filename + ";Extended Properties=Excel 8.0";  
  6. string sqlin = "SELECT * FROM [Sheet2$]";  
  7. OleDbCommand olecommand = new OleDbCommand(sqlin, new OleDbConnection(conn));  
  8. OleDbDataAdapter adapterin = new OleDbDataAdapter(olecommand);  
  9. DataSet dsin = new DataSet();  
  10. adapterin.Fill(dsin);  
  11. DataTable dtin = dsin.Tables[0];//连接并读取Excel数据  
  12.  
  13. for (i = 3; i <= totalrow; i++)//将Excel文件中***个工作表的数据导入到sql数据库scjd_youliaoxiaohaojihua表中  
  14. {  
  15.      string sql = "insert into scjd_youliaoxiaohaojihua(yuexuhao,danwei,youpin,
  16. cheliangmingchengxinghao,zichanxingzhi,chepaihao,qiyou,chaiyou,beizhu) values('";  
  17.      int j;  
  18.      sql += DropDownList1.SelectedValue.ToString() + DropDownList3.SelectedValue.ToString();  
  19.      if (DropDownList1.SelectedValue.ToString() != DateTime.Now.Year.ToString() || int.Parse
  20. (DateTime.Now.Month.ToString()) != int.Parse(DropDownList3.SelectedValue.ToString()))  
  21.      {  
  22.          sql += "20";  
  23.      }  
  24.      else 
  25.      {  
  26.         if (int.Parse(DateTime.Now.Day.ToString()) < 10)  
  27.             sql += "0";  
  28.         sql += DateTime.Now.Day.ToString();  
  29.      }  
  30.      if (i-3 + count < 9)  
  31.            sql += "00";  
  32.      else if (i-3 + count < 99)  
  33.           sql += "0";  
  34.      sql += (i -3 + 1 + count).ToString();  
  35.      sql += "','";  
  36.      for (j = 1; j < 8; j++)  
  37.      {//遍历Excel表中一行的所有列,除***一列  
  38.          sql += dtin.Rows[i][j].ToString().Trim();  
  39.          sql += "','";  
  40.      }  
  41.      sql += dtin.Rows[i][8].ToString().Trim();  
  42.      sql += "')";  
  43.      try 
  44.      {  
  45.           DoSql(sql);  
  46.      }  
  47.      catch (Exception eeeeeee)  
  48.       {  
  49.          Response.Write("");  
  50.          return;  
  51.       }  
  52. }  
  53.  
  54. FileInfo file = new FileInfo(Server.MapPath("fileupload/") +  filename);  
  55. if (file.Exists)  
  56. {//删除文件  
  57.         file.Delete();  
  58. }  
  59.  
  60. protected void DoSql(string sql)//执行sql语句的函数  
  61.     {  
  62.         SqlConnection conn = new SqlConnection();//创建连接对象  
  63.         conn.ConnectionString = ConfigurationManager.AppSettings["conn"].ToString();//给连接字符串赋值  
  64.         conn.Open();//打开数据库  
  65.         SqlCommand cmd = new SqlCommand(sql, conn);  
  66.         cmd.ExecuteNonQuery();//  
  67.         conn.Close();//关闭数据库  
  68.     } 

注:

1、本文代码均取自我最近刚做的一个小项目,部分数据有较强针对性,并不通用,只有思路通用

2、由于能力和水平问题,部分代码显得有些笨拙,若能灵活运用存储过程,应能大幅度简化代码

ASP.NET数据导入之实现Excel to MSSQL的情况就向你介绍到这里,希望通过介绍使你对于ASP.NET数据导入之实现Excel to MSSQL有所了解。

【编辑推荐】

  1. ASP.NET数据缓存之数据缓存浅谈
  2. ASP.NET数据采集的实现浅析
  3. ASP.NET数据访问层SqlHelperSqlHelper的使用
  4. 哈希算法实现ASP.NET数据加密
  5. 对称加密算法实现ASP.NET数据加密

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...