asp.net 导入Excel记录到数据库中
常用到的一个数据库导入功能,这样的话就省了很大一部分时间来处理程序上的问题而不是无休止的重复复制粘贴动作。
其他的废话不多说,直接上代码:
前提条件:
根目录下建立uploadfiles文件夹(用于保存上传的xls文件);
aspx部分:
添加uploadfile和button控件即可。
aspx 部分代码:
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head runat="server">
- <title></title>
- </head>
- <body>
- <form id="form1" runat="server">
- <div>
- <asp:FileUpload ID="FileUpload1" runat="server" />
- <asp:Button ID="Button1" runat="server" Text="确定上传" onclick="Button1_Click" />
- </div>
- </form>
- </body>
- </html>
cs 部分:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using System.Data;
- using System.Data.OleDb;
- using System.IO;
- namespace ImportExcel
- {
- public partial class _Default : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- }
- #region 问题:未在本地计算机上注册Microsoft.ACE.OLEDB.12.0提供程序
- // 解决访问Excel数据源时出现 未在本地计算机上注册Microsoft.ACE.OLEDB.12.0提供程序
- // 1、确保安装了Microsoft.ACE.OLEDB.12.0驱动
- // http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe
- // 2、在vs中右击项目--》属性--》生成 下的 目标平台 改为x86
- // 如果以上两个方法还是不行的话,用第三个方法
- // 3、在对应的 IIS 应用程序池中,“设置应用程序池默认属性”右击/“高级设置”/"启用32位应用程序",设置为 true。
- #endregion
- public System.Data.DataTable GetExcelDatatable(string fileUrl)
- {
- //支持.xls和.xlsx,即包括office2010等版本的 HDR=Yes代表第一行是标题,不是数据;
- string cmdText = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";
- System.Data.DataTable dt = null;
- //建立连接
- OleDbConnection conn = new OleDbConnection(string.Format(cmdText, fileUrl));
- try
- {
- //打开连接
- if (conn.State == ConnectionState.Broken || conn.State == ConnectionState.Closed)
- {
- conn.Open();
- }
- System.Data.DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
- string strSql = "select * from [Sheet1$]";
- OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);
- DataSet ds = new DataSet();
- da.Fill(ds);
- dt = ds.Tables[];
- return dt;
- }
- catch (Exception exc)
- {
- throw exc;
- }
- finally
- {
- conn.Close();
- conn.Dispose();
- }
- }
- protected void Button1_Click(object sender, EventArgs e)
- {
- if (FileUpload1.HasFile == false)//HasFile用来检查FileUpload是否有指定文件
- {
- Response.Write("<script>alert('请您选择Excel文件')</script> ");
- return;//当无文件时,返回
- }
- string IsXls = Path.GetExtension(FileUpload1.FileName).ToString().ToLower();//System.IO.Path.GetExtension获得文件的扩展名
- if (IsXls != ".xlsx" || IsXls != ".xls")
- {
- Response.Write("<script>alert('只可以选择Excel文件')</script>");
- return;//当选择的不是Excel文件时,返回
- }
- string filename = FileUpload1.FileName; //获取Execle文件名 DateTime日期函数
- string savePath = Server.MapPath(("uploadfiles\\") + filename);//Server.MapPath 获得虚拟服务器相对路径
- DataTable ds = new DataTable();
- FileUpload1.SaveAs(savePath); //SaveAs 将上传的文件内容保存在服务器上
- ds = GetExcelDatatable(savePath); //调用自定义方法
- DataRow[] dr = ds.Select(); //定义一个DataRow数组
- int rowsnum = ds.Rows.Count;
- int successly = ;
- if (rowsnum == )
- {
- Response.Write("<script>alert('Excel表为空表,无数据!')</script>"); //当Excel表为空时,对用户进行提示
- }
- else
- {
- string _Result = "";
- for (int i = ; i < dr.Length; i++)
- {
- //前面除了你需要在建立一个“upfiles”的文件夹外,其他的都不用管了,你只需要通过下面的方式获取Excel的值,然后再将这些值用你的方式去插入到数据库里面
- string title = dr[i]["标题"].ToString();
- string linkurl = dr[i]["链接地址"].ToString();
- string categoryname = dr[i]["分类"].ToString();
- string customername = dr[i]["内容摘要"].ToString();
- try
- {
- var uuid = Guid.NewGuid().ToString();
- string sql = string.Format("insert into testdb(id,title,linkurl,categoryname,customername) values('{0}','{1}','{2}','{3}','{4}')", uuid, title, linkurl, categoryname, customername);
- int count = SqlDbHelper.ExecuteNonQuery(sql);
- if (count > )
- successly++;
- }
- catch (Exception ex)
- {
- _Result = _Result + ex.InnerException + "\\n\\r";
- }
- }
- if (successly == rowsnum)
- {
- string strmsg = "Excle表导入成功!";
- System.Web.HttpContext.Current.Response.Write("<Script Language='JavaScript'>window.alert('" + strmsg + "');</script>");
- }
- else
- {
- Response.Write("<script>alert('Excle表导入失败!');</script>");
- }
- }
- }
- }
- }
文件模板如下:
以上为整个文件导入的全部程序,如果有什么问题欢迎大家积极评论……
asp.net 导入Excel记录到数据库中的更多相关文章
- .net导入excel数据到数据库中
在开发过程中我们经常面临着需要将数据导出或者导入到系统中,例如一些生产管理系统,项目管理系统等等都会有这样的需求: 将excel数据到系统中思路:获取excel中每一行的数据,然后存入集合中,批量添加 ...
- ASP.NET导入Excel到SQL数据库
protected void btnChange_Click(object sender, EventArgs e) { UserInfoClass tClass = (UserInfoClass)S ...
- MYSQL 导入Excel数据到数据库中
1,先把excel的数据整理整齐,如每列都要保持同样的格式:就一列一列的数据: 2,导出excel的数据为CSV格式,即把excel的数据另存为xxxx.csv;: 3,用EditPlus工具将xxx ...
- 如何把EXCEL数据导入到SQL SERVER数据库中 (转)
转:http://blog.csdn.net/jjp837661103/article/details/13509889 在我们完成一个项目开发之后,通常我们需要把客户的很多数据导入到数据库中,面对大 ...
- 利用kettle组件导入excel文件到数据库
利用kettle组件导入excel文件到数据库 1. 实现目标 把excel文件内容导入到目标表中:然后用java调用kettle的转换.excel文件的内容仅仅有两列,示比例如以下: wat ...
- C#-导入Excel 内容到 DataTable中
C#-导入Excel 内容到 DataTable中 直接传入文件路径,支持所有Excel格式. 缺点:如果数据量庞大会很占内存. public static DataTable ImportExcel ...
- 【转】 如何导入excel数据到数据库,并解决导入时间格式问题
在办公环境下,经常会用到处理excel数据,如果用写程序导入excel数据到数据库那就太麻烦了,涉及解析excel,还要各种格式问题,下面简单利用数据库本身支持的功能解决这类导入问题. 准备 创建表 ...
- 图解如何 将Excel里的数据导入到sql server数据库中
项目中,经常会碰到如何将Excel里的数据导入到sql server中的问题. 下面,图解如何实现导入Excel中的数据到sql server 2008 R2: Excel截图如下: 查询pub数据库 ...
- SQLServer---------使用Excel 往sqlServer数据库中导入数据
1.右击创建好的表选择编辑200行 2.保证Excel的字段顺序与数据中顺序一致 3.选中好了后进行复制 4.打开文本 一个快捷方式 将excel 中的数据 黏贴放到文本中 5.点击sql ...
随机推荐
- Django框架【基础篇】
Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...
- 寻找最小(最大)的k个数
题目描述:输入n个整数,输出其中最小的k个元素. 例如:输入1,2,3,4,5,6,7,8这8个数字,则最小的4个数字为1,2,3,4. 思路1:最容易想到的方法:先对这个序列从小到大排序,然后输出前 ...
- Django查询orm的前一天,前一周,一个月的数据
利用datatime模块的datetime.timedelta()方法 计算时间差,以下是用法 唯一要注意的是数据库存储models.datefield字段是日期格式,所以比较的数据也是日期格式 #当 ...
- HTTP的常见状态码
一.1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态码. 100(继续) 请求者应当继续提出请求.服务器返回此代码表示已收到请求的第一部分,正在等待其余部分. 101(切换协议) 请求者 ...
- uchome四大常用入口文件
一.四大常用入口文件 cp.php 编辑日志.相册.活动等等相关编辑操作基本上都从这个文件入口 do.php 登录.注册.找回密码.相册批量上传.在需要密码的情况 ...
- Mirror--镜像相关操作
其他相关操作1. 关闭镜像--关闭镜像USE [master]GOALTER DATABASE Demo1 SET PARTNER OFFGO 2. 证服务器--移除见证服务器USE [master ...
- Log表新的RowKey设计,预Split
1 目前Rawlog表的问题 region数量庞大,空region 率大 共有12791个region 11409空region, 比例为89.19% 剩余的region大小也是极度不均衡,最大的re ...
- 0702-spring cloud config-git仓库配置、用户授权
一.概述 参看地址:https://cloud.spring.io/spring-cloud-static/Edgware.SR3/single/spring-cloud.html#_environm ...
- Miller-Rabin素数测试算法(POJ1811Prime Test)
题目链接:http://poj.org/problem?id=1811 题目解析:2<=n<2^54,如果n是素数直接输出,否则求N的最小质因数. 求大整数最小质因数的算法没看懂,不打算看 ...
- MISC-WHCTF2016-crypto100
题目:李二狗的梦中情人 找不同! 如图,下载得到“nvshen.png” 流程:看到这个被命名为nvshen的文件,感觉文件本身会有东西.用16进制查看器在图片的末尾发现了一串类似URL的ASCII ...