首页

文章

把Excel工作表中数据导入数据库

发布网友 发布时间:2022-04-19 17:42

我来回答

2个回答

懂视网 时间:2022-04-08 02:36

 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.Configuration;
 10 using System.Data.SqlClient;
 11 
 12 namespace InExcelOutExcel
 13 {
 14 public partial class ExcelToDB : System.Web.UI.Page
 15 {
 16  protected void Page_Load(object sender, EventArgs e)
 17  {
 18  FileSvr fileSvr = new FileSvr();
 19  System.Data.DataTable dt = fileSvr.GetExcelDatatable("C:\Users\NewSpring\Desktop\Demo\InExcelOutExcel\InExcelOutExcel\excel\ExcelToDB.xlsx", "mapTable");
 20  fileSvr.InsetData(dt);
 21  }
 22 }
 23 class FileSvr
 24 {
 25  /// <summary>
 26  /// Excel数据导入Datable
 27  /// </summary>
 28  /// <param name="fileUrl"></param>
 29  /// <param name="table"></param>
 30  /// <returns></returns>
 31  public System.Data.DataTable GetExcelDatatable(string fileUrl, string table)
 32  {
 33  //office2007之前 仅支持.xls
 34  //const string cmdText = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=‘Excel 8.0;IMEX=1‘;";
 35  //支持.xls和.xlsx,即包括office2010等版本的 HDR=Yes代表第一行是标题,不是数据;
 36  const string cmdText = "Provider=Microsoft.Ace.OleDb.12.0;Data Source={0};Extended Properties=‘Excel 12.0; HDR=Yes; IMEX=1‘";
 37 
 38  System.Data.DataTable dt = null;
 39  //建立连接
 40  OleDbConnection conn = new OleDbConnection(string.Format(cmdText, fileUrl));
 41  try
 42  {
 43   //打开连接
 44   if (conn.State == ConnectionState.Broken || conn.State == ConnectionState.Closed)
 45   {
 46   conn.Open();
 47   }
 48 
 49 
 50   System.Data.DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
 51 
 52   //获取Excel的第一个Sheet名称
 53   string sheetName = schemaTable.Rows[0]["TABLE_NAME"].ToString().Trim();
 54 
 55   //查询sheet中的数据
 56   string strSql = "select * from [" + sheetName + "]";
 57   OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);
 58   DataSet ds = new DataSet();
 59   da.Fill(ds, table);
 60   dt = ds.Tables[0];
 61 
 62   return dt;
 63  }
 64  catch (Exception exc)
 65  {
 66   throw exc;
 67  }
 68  finally
 69  {
 70   conn.Close();
 71   conn.Dispose();
 72  }
 73 
 74  }
 75 
 76  /// <summary>
 77  /// 从System.Data.DataTable导入数据到数据库
 78  /// </summary>
 79  /// <param name="dt"></param>
 80  /// <returns></returns>
 81  public int InsetData(System.Data.DataTable dt)
 82  {
 83  int i = 0;
 84  string lng = "";
 85  string lat = "";
 86  string offsetLNG = "";
 87  string offsetLAT = "";
 88 
 89  foreach (DataRow dr in dt.Rows)
 90  {
 91   lng = dr["LNG"].ToString().Trim();
 92   lat = dr["LAT"].ToString().Trim();
 93   offsetLNG = dr["OFFSET_LNG"].ToString().Trim();
 94   offsetLAT = dr["OFFSET_LAT"].ToString().Trim();
 95 
 96   //sw = string.IsNullOrEmpty(sw) ? "null" : sw;
 97   //kr = string.IsNullOrEmpty(kr) ? "null" : kr;
 98 
 99   string strSql = string.Format("Insert into DBToExcel (LNG,LAT,OFFSET_LNG,OFFSET_LAT) Values (‘{0}‘,‘{1}‘,{2},{3})", lng, lat, offsetLNG, offsetLAT);
100 
101   string strConnection = ConfigurationManager.ConnectionStrings["ConnectionStr"].ToString();
102   SqlConnection sqlConnection = new SqlConnection(strConnection);
103   try
104   {
105   // SqlConnection sqlConnection = new SqlConnection(strConnection);
106   sqlConnection.Open();
107   SqlCommand sqlCmd = new SqlCommand();
108   sqlCmd.CommandText = strSql;
109   sqlCmd.Connection = sqlConnection;
110   SqlDataReader sqlDataReader = sqlCmd.ExecuteReader();
111   i++;
112   sqlDataReader.Close();
113   }
114   catch (Exception ex)
115   {
116   throw ex;
117   }
118   finally
119   {
120   sqlConnection.Close();
121 
122   }
123   //if (opdb.ExcSQL(strSql))
124   // i++;
125  }
126  return i;
127  }
128 }
129 }



运行结果:

技术分享

将Excle数据导入到数据库

标签:

热心网友 时间:2022-04-07 23:44

这是第二次了,市场部那边又来要求改数据。他们要改的是数据库某张表中类似商品价格等的数据,需要改的地方又多,我们上次是靠新来的兄弟一个个给Update进去的,这次老大去教了他们Update语句,把烦人的皮球踢给他们了。但这样一个个更新很明显不是办法,我想通过excel直接把数据导入数据库应该是可行的吧,就开始找方法了。
我想至少有这样两种比较容易实现的方法:
1、直接用Sql语句查询
2、先用excle中的数据生成xml文件,再把xml导入数据库
第一种方法(方法二以后再试),找到联机丛书里实现此功能的Sql语句如下:
SELECT* FROMOpenDataSource('Microsoft.Jet.OLEDB.4.0', 'DataSource="c:Financeaccount.xls";UserID=Admin;Password=;Extendedproperties=Excel5.0')…xactions
语句是有了,但我还是试了很久,因为各个参数具体该怎么设置它没有说。Data Source就是excel文件的路径,这个简单;UserId、Password和Extended properties这三个属性我改成了各种各样的与本机有关的用户名、密码以及excel版本都不对,最后用上面例子里的值“User ID=Admin;Password=;Extended properties=Excel 5.0”才成功了,晕啊;最后个“xactions”更是查了很多资料,其实就仅仅是excel文件里所选的工作表名而已,怪我对excel不够熟悉了,另外注意默认的Sheet1要写成[Sheet1$]
最后,看看我成功的测试
数据库里建好一个表testTable_1,有5个字段id, name, date, money, content,C盘下book1.xls文件的sheet1工作表里写好对应的数据并设好数据类型,执行如下插入语句:
insertintotestTable_1([name],[date],[money],[content]) Select[姓名],[日期],[金额],[内容] FROMOpenDataSource('Microsoft.Jet.OLEDB.4.0', 'DataSource="C:Book1.xls"; UserID=Admin;Password=;Extendedproperties=Excel5.0')…[Sheet1$]
select里的列名我一开始用*代替,但发现输出顺序与我预期的不同,是“金额、内容、日期、姓名”,不知道具体有什么规律,就老老实实写名字了。操作成功
回过头来看看市场部的要求,假设在我这张表里实现,可以先判断如excel里存在与记录相同的name字段(name要唯一非空)时就删除记录,之后再插入,这样简单,但自增的id字段会因为插入而改变,那是不行的了。可行的方法是先读出excel里全部记录,然后用游标一条条分析,如果存在这个name就更新否则就插入。OK,下次就不用让他们再对着文档一条条Update了
逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 “君不见巴丘古城如培塿”的出处是哪里 带“奈何”的诗句大全(229句) 里翁行()拼音版、注音及读音 带“不虑”的诗句 “鲁肃当年万人守”的出处是哪里 无尘防尘棚 进出口报关流程,越详细越好。谢谢大家指教。 双线桥不是看化合价升多少就标多少的吗?为什么CL2+2KI=2KCL+I2中I失... 出师表高锰酸钾有画面了吗 2021年幼儿园新学期致家长一封信 电脑屏幕一条黑线怎么办? 销售代理商销售代理商的特点 如何将excel表格导入到数据库表中 怎么把excel表格导入数据库 如何将excel中的数据导入到数据库 IPHONE5来了,旧款的IPHONE音箱怎么办 如何将旧音箱改造成无线蓝牙音箱 BB霜好还是CC霜好? BB霜和面霜有什么区别吗? 旧音响如何改装成电脑音响或则手机音响DIY bb霜和dd霜有什么区别 BB霜与CC霜的区别, EE霜和CC霜哪个好? CC霜和BB霜有什么区别,对于学生来说哪个更好用? 什么是BB霜?与隔离乳有什么区别吗 气垫bb和气垫ee哪个好 隔离霜和BB霜,CC霜,EE霜有什么区别,买哪一个更好... 什么是EE霜? BB霜CC霜和EE霜都有什么区别吖,不都是美白遮瑕的吗 bb霜与ee霜,防晒霜的区别 气垫EE和气垫CC有什么区别?还有气垫BB ee霜和气垫bb有什么区别? excel表格如何导入数据库中? 如何将excel表导入数据库的方法 excel表格如何导入数据库中? 如何将excel表格导入数据库 如何将excel文件导入数据库 excel导入数据库怎么导入 怎样把excel的数据导入到数据库里面去 如何把excel表格导入数据库 怎么把Excel数据导入到数据库? 如何将excel中的数据导入数据库 怎么实现EXCEL表导入数据库 网站里面的视频怎么保存到手机 怎么把excel里的数据导入数据库中的表中 怎么将excel中的数据导入数据库 手机怎么缓存网页的视频 怎么把视频网站的视频保存到手机 小米手机如何保存网页上的视频到相册里 怎么把网站的视频保存到手机 手机怎么保存网页上的视频 淘汰的旧手机喇叭音质比台式电脑音箱好,有什么办法把
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com