前提条件:

     根目录下建立uploadfiles文件夹(用于保存上传的xls文件);

aspx部分:

      添加uploadfile和button控件即可。

aspx 部分代码:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 
 3 <html xmlns="http://www.w3.org/1999/xhtml">
 4 <head runat="server">
 5     <title></title>
 6 </head>
 7 <body>
 8     <form id="form1" runat="server">
 9     <div>
10         <asp:FileUpload ID="FileUpload1" runat="server" />
11         <asp:Button ID="Button1" runat="server"  Text="确定上传" onclick="Button1_Click" />
12     </div>
13     </form>
14 </body>
15 </html>

 

cs 部分:

1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Web;
  5 using System.Web.UI;
  6 using System.Web.UI.WebControls;
  7 using System.Data;
  8 using System.Data.OleDb;
  9 using System.IO; 10 
 11 namespace ImportExcel
 12 {
 13     public partial class _Default : System.Web.UI.Page
 14     {
 15         protected void Page_Load(object sender, EventArgs e)
 16         {
 17 
 18         }
 19 
 20         #region   问题:未在本地计算机上注册Microsoft.ACE.OLEDB.12.0提供程序
 21         //  解决访问Excel数据源时出现 未在本地计算机上注册Microsoft.ACE.OLEDB.12.0提供程序
 22         //  1、确保安装了Microsoft.ACE.OLEDB.12.0驱动
 23         //  http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe
 24         //  2、在vs中右击项目--》属性--》生成 下的 目标平台 改为x86
 25         //  如果以上两个方法还是不行的话,用第三个方法
 26         //  3、在对应的 IIS 应用程序池中,“设置应用程序池默认属性”右击/“高级设置”/"启用32位应用程序",设置为 true。
 27         #endregion
 28 
 29         public System.Data.DataTable GetExcelDatatable(string fileUrl)
 30         {
 31             //支持.xls和.xlsx,即包括office2010等版本的   HDR=Yes代表第一行是标题,不是数据;
 32             string cmdText = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";
 33             System.Data.DataTable dt = null;
 34             //建立连接
 35             OleDbConnection conn = new OleDbConnection(string.Format(cmdText, fileUrl));
 36             try
 37             {
 38                 //打开连接
 39                 if (conn.State == ConnectionState.Broken || conn.State == ConnectionState.Closed)
 40                 {
 41                     conn.Open();
 42                 }
 43 
 44                 System.Data.DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
 45                 string strSql = "select * from [Sheet1$]";
 46                 OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);
 47                 DataSet ds = new DataSet();
 48                 da.Fill(ds);
 49                 dt = ds.Tables[0];
 50                 return dt;
 51             }
 52             catch (Exception exc)
 53             {
 54                 throw exc;
 55             }
 56             finally
 57             {
 58                 conn.Close();
 59                 conn.Dispose();
 60             }
 61         }
 62 
 63         protected void Button1_Click(object sender, EventArgs e)
 64         {
 65             if (FileUpload1.HasFile == false)//HasFile用来检查FileUpload是否有指定文件
 66             {
 67                 Response.Write("<script>alert('请您选择Excel文件')</script> ");
 68                 return;//当无文件时,返回
 69             }
 70             string IsXls = Path.GetExtension(FileUpload1.FileName).ToString().ToLower();//System.IO.Path.GetExtension获得文件的扩展名
 71             if (IsXls != ".xlsx" || IsXls != ".xls")
 72             {
 73                 Response.Write("<script>alert('只可以选择Excel文件')</script>");
 74                 return;//当选择的不是Excel文件时,返回
 75             }
 76             string filename = FileUpload1.FileName;              //获取Execle文件名  DateTime日期函数
 77             string savePath = Server.MapPath(("uploadfiles\\") + filename);//Server.MapPath 获得虚拟服务器相对路径
 78             DataTable ds = new DataTable();
 79             FileUpload1.SaveAs(savePath);                        //SaveAs 将上传的文件内容保存在服务器上
 80             ds = GetExcelDatatable(savePath);           //调用自定义方法
 81             DataRow[] dr = ds.Select();            //定义一个DataRow数组
 82             int rowsnum = ds.Rows.Count;
 83             int successly = 0;
 84             if (rowsnum == 0)
 85             {
 86                 Response.Write("<script>alert('Excel表为空表,无数据!')</script>");   //当Excel表为空时,对用户进行提示
 87             }
 88             else
 89             {
 90                 string _Result = "";
 91                 for (int i = 0; i < dr.Length; i++)
 92                 {
 93                     //前面除了你需要在建立一个“upfiles”的文件夹外,其他的都不用管了,你只需要通过下面的方式获取Excel的值,然后再将这些值用你的方式去插入到数据库里面
 94                     string title = dr[i]["标题"].ToString();
 95                     string linkurl = dr[i]["链接地址"].ToString();
 96                     string categoryname = dr[i]["分类"].ToString();
 97                     string customername = dr[i]["内容摘要"].ToString();
 98 
 99                     try
100                     {
101                         var uuid = Guid.NewGuid().ToString();
102                         string sql = string.Format("insert into testdb(id,title,linkurl,categoryname,customername) values('{0}','{1}','{2}','{3}','{4}')", uuid, title, linkurl, categoryname, customername);
103                         int count = SqlDbHelper.ExecuteNonQuery(sql);
104                         if (count > 0)
105                             successly++;
106 
107                     }
108                     catch (Exception ex)
109                     {
110                         _Result = _Result + ex.InnerException + "\\n\\r";
111                     }
112                 }
113                 if (successly == rowsnum)
114                 {
115                     string strmsg = "Excle表导入成功!";
116                     System.Web.HttpContext.Current.Response.Write("<Script Language='JavaScript'>window.alert('" + strmsg + "');</script>");
117                 }
118                 else
119                 {
120                     Response.Write("<script>alert('Excle表导入失败!');</script>");
121                 }
122             }
123         }
124     }
125 }

 

 转载自:https://www.cnblogs.com/felix-wang/p/6727945.html

 posted on 2018-02-28 11:12  老年菜鸟程序员  阅读(207)  评论(0编辑  收藏  举报