protected void Button1_Click(object sender, EventArgs e){if (IsPostBack){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(FileUpload1.FileName);Response.Write("<script>alert('只可以选择Excel文件')</script>");return;//当选择的不是Excel文件时,返回}string filename = GetTimeStamp() + IsXls;string savePath = Server.MapPath(("~\\upload\\") + filename);//Server.MapPath 服务器上的指定虚拟路径相对应的物理文件路径//savePath ="D:\vsproject\Projects\exceltestweb\exceltestweb\uploadfiles\test.xls"//Response.Write(savePath);DataTable ds = new DataTable();FileUpload1.SaveAs(savePath);//将文件保存到指定路径DataTable dt = GetExcelDatatable(savePath);//读取excel数据SHelp _sql = new SHelp(0);DataTable _dtx = _sql.GetData("select MaxFid from t_systemmax where TabelName='t_inapply'");Int64 MaxFid = Convert.ToInt64(_dtx.Rows[0][0].ToString());dt.Columns.Add("Fid");for (int i = 0; i < dt.Rows.Count; i++){try{while (dt.Rows[i][0].ToString() == ""){dt.Rows.RemoveAt(i);}MaxFid += 1;dt.Rows[i]["Fid"] = MaxFid.ToString();}catch{break;}}for (int i = 0; i < dt.Columns.Count; i++){dt.Columns[i].ColumnName = dt.Columns[i].ColumnName.Trim();}dt.Columns["发货金额(含税)"].ColumnName = "发货金额";int x = _sql.SqlBulkCopyByDatatable("t_inapply", dt);if (x == -1){Response.Write("<script>alert('上传数据列不一致!');</script>");}else{x = _sql.ExecuteNonQuery("update t_systemmax set MaxFid=(select isnull(MAX(Fid),0) from t_inapply) where TabelName='t_inapply'  update t_inapply set FDate=GETDATE() where FDate is null ");Response.Write("<script>alert('上传文件读取数据成功!');</script>");}File.Delete(savePath);//删除文件}}/// <summary>/// 从excel文件中读取数据/// </summary>/// <param name="fileUrl">实体文件的存储路径</param>/// <returns></returns>private static DataTable GetExcelDatatable(string fileUrl){//支持.xls和.xlsx,即包括office2010等版本的;HDR=Yes代表第一行是标题,不是数据;string cmdText = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileUrl + "; Extended Properties=\"Excel 12.0;HDR=Yes\"";System.Data.DataTable dt = null;//建立连接OleDbConnection conn = new OleDbConnection(cmdText);string tableName = "";try{//打开连接if (conn.State == ConnectionState.Broken || conn.State == ConnectionState.Closed){conn.Open();dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);tableName = dt.Rows[0][2].ToString().Trim();dt = null;}System.Data.DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);string strSql = "select * from ["+ tableName + "]";   //这里指定表明为Sheet1,如果修改过表单的名称,请使用修改后的名称OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);DataSet ds = new DataSet();da.Fill(ds);dt = ds.Tables[0]; ;return dt;}catch (Exception exc){throw exc;}finally{conn.Close();conn.Dispose();}}/// <summary>/// 获取时间戳/// </summary>/// <returns></returns>public string GetTimeStamp(){TimeSpan ts = DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0);return Convert.ToInt64(ts.TotalSeconds).ToString();}
/// <summary>/// 将表中资料批量插入到数据库/// /// </summary>/// <param name="connectionString"></param>/// <param name="TableName"></param>/// <param name="dt"></param>public int SqlBulkCopyByDatatable(string TableName, DataTable dt){using (this._conn = new SqlConnection(sqlAdd)){using (SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(sqlAdd, SqlBulkCopyOptions.UseInternalTransaction)){try{sqlbulkcopy.DestinationTableName = TableName;for (int i = 0; i < dt.Columns.Count; i++){sqlbulkcopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);}sqlbulkcopy.WriteToServer(dt);return 1;}catch (System.Exception ex){return -1;}}}}

c#大批量Exce数据l导入数据库相关推荐

  1. [DJANGO] excel十几万行数据快速导入数据库研究

    先贴原来的导入数据代码: 8 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "www.setting ...

  2. 几万条数据的excel导入到mysql_excel十几万行数据快速导入数据库研究(转,下面那个方法看看还是可以的)...

    先贴原来的导入数据代码: 8 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "www.setting ...

  3. java excel批量导入数据库数据_Java实现Excel数据批量导入数据库

    Java实现Excel数据批量导入数据库 概述: 这个小工具类是工作中的一个小插曲哦,因为提数的时候需要跨数据库导数... 有的是需要从oracle导入mysql ,有的是从mysql导入oracle ...

  4. 如何将excel的数据直接导入数据库

    好久没有更新啦,小徐在新的学期的某节课中发现,自己对于简单将Excel表格中的数据导入数据库中都有些迷茫(准确说,给忘啦,有些惭愧惭愧),其他不说,下面就介绍一下如何将excel的数据直接导入数据库. ...

  5. Java实现数据批量导入数据库(优化速度-2种方法)

    目录 程序结构 连接数据程序 批量处理的两种方式 main方法 使用JDBC连接MySQL数据库进行数据插入的时候,经常会遇到数据量较大,插入数据库较慢,如何进行优化,加快导入数据库的速度,批量处理呢 ...

  6. 记一次百万数据excel导入数据库的处理过程

    场景:现在需要导入账号角色关系数据,数据量:10万----百万.之前代码处理逻辑复杂,运用poi导入技术,业务处理中操作数据库为单次操作,访问数据库次数多,最后批量导入为同步导入,导致数据量过大时,接 ...

  7. oracle_tpch导数据,TPCH导入数据库及学习

    我们使用TPCH生成测试数据集来进行数据挖掘算法的测试,这是学习记录 一.TPC-H简介 TPC-H是TPC提供的一个benchmark,用来模拟一个现实中的商业应用,可以生成一堆虚构的数据,且自带一 ...

  8. java poi excel 导入数据库_java POI 处理excel表格数据并导入数据库示例

    java操作Excel最常用的开源组件有poi与jxl.jxl是韩国人开发的,发行较早,但是更新的很慢,目前似乎还不支持excel2007. poi是apache下的一个子项目,poi应该是处理ms的 ...

  9. python接入excel_使用Python实现Excel数据表导入数据库

    原博文 2020-06-16 09:48 − import pymysqlimport xlrdfrom xlrd import xldate_as_tupleimport datetime# 连接数 ...

最新文章

  1. 不是计算机专业学python能找到工作吗-本科学历,非计算机专业,想学Python找工作靠谱吗?...
  2. SQL Tips:兼顾检索速度和精确性
  3. 6. Qt 信号与信号槽(4)-QMetaObjectPrivate
  4. 英特尔发布至强E-2300服务器处理器,比上一代性能提高17%
  5. VC实现将程序最小化到托盘
  6. 应用物理跨考计算机专业,应用物理学考研可跨专业
  7. hdu1010 Tempter of the Bone---DFS+奇偶剪枝
  8. Protel99SE
  9. Android jobb 工具使用详解
  10. php怎麼用jabber,class.jabber
  11. 记忆碎片之python爬虫APP数据爬取fiddler抓包及多线程爬取流程分析(四)
  12. 深入SpringBoot源码(二)getSpringFactoriesInstances方法详解
  13. CH6202 黑暗城堡 最短路径生成树
  14. 分享几个不错的流程图制作网站
  15. Android 代码形式安装证书到手机内
  16. Adobe acrobat修改批注名字
  17. kettle下载百度网盘地址含入门教程2(文本/EXCEL的导入导出)
  18. linux命令配置网卡IP (全)
  19. flutter/dart通过ffi调用rust代码
  20. 03 - 滤波器组典型相关分析(Filter bank canonical correlation analysis,fbcca)

热门文章

  1. mysql被替换的文件如何恢复吗_文件被覆盖替换了怎么找回来
  2. 电路邱关源学习笔记——1.7基尔霍夫定律
  3. 机器视觉-工业相机篇
  4. 彻底读懂行为经济学名著《思考,快与慢》
  5. 安卓 每日一题 2020年5-6月问题及答案
  6. 【AI公司酷05期】美宅科技:独创人工智能室内设计引擎,帮你3秒搞定装修方案,要用AI赋能家居新零售
  7. Vue3报错:Extraneous non-props attributes (ref_key) were passed to component but could not be automatic
  8. Python语言程序设计(嵩天老师)-期末考试3.2-站队顺序输出
  9. javaWeb基础---Jsp
  10. html/css--flex布局