要把excel 导入到SQL server中,试了几种方法都没有成功,求助

问题描述

VS2005,C#,SQLSERVER最好能通过存储过程来实现,因为判断的时候灵活一点,可以把一些不符合条件的行过滤掉。

解决方案

解决方案二:
一次性全部导入SQL然后再判断哪些需要删除这样方便一点好像
解决方案三:
usingSystem;usingSystem.Drawing;usingSystem.Collections;usingSystem.ComponentModel;usingSystem.Windows.Forms;usingSystem.Data;usingSystem.Data.OleDb;usingSystem.Data.SqlClient;usingSystem.Web;namespaceWindowsApplication1{///<summary>///Form1的摘要说明。///</summary>publicclassForm1:System.Windows.Forms.Form{privateSystem.Windows.Forms.DataGriddataGrid1;///<summary>///必需的设计器变量。///</summary>privateSystem.ComponentModel.Containercomponents=null;publicForm1(){////Windows窗体设计器支持所必需的//InitializeComponent();////TODO:在InitializeComponent调用后添加任何构造函数代码//}///<summary>///清理所有正在使用的资源。///</summary>protectedoverridevoidDispose(booldisposing){if(disposing){if(components!=null){components.Dispose();}}base.Dispose(disposing);}#regionWindows窗体设计器生成的代码///<summary>///设计器支持所需的方法-不要使用代码编辑器修改///此方法的内容。///</summary>privatevoidInitializeComponent(){this.dataGrid1=newSystem.Windows.Forms.DataGrid();((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();this.SuspendLayout();////dataGrid1//this.dataGrid1.DataMember="";this.dataGrid1.HeaderForeColor=System.Drawing.SystemColors.ControlText;this.dataGrid1.Location=newSystem.Drawing.Point(16,32);this.dataGrid1.Name="dataGrid1";this.dataGrid1.Size=newSystem.Drawing.Size(664,464);this.dataGrid1.TabIndex=0;////Form1//this.AutoScaleBaseSize=newSystem.Drawing.Size(6,14);this.ClientSize=newSystem.Drawing.Size(688,494);this.Controls.Add(this.dataGrid1);this.Name="Form1";this.Text="Form1";this.Load+=newSystem.EventHandler(this.Form1_Load);((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();this.ResumeLayout(false);}#endregion///<summary>///应用程序的主入口点。///</summary>[STAThread]staticvoidMain(){Application.Run(newForm1());}privatevoidwirteSql(){DataTabletb;tb=OLEEXCEL().Tables[0];stringstrCreateTable="createtabletable1(";//strCreateTable=tb.Columns[0].ColumnNamefor(intcol=0;col<tb.Columns.Count;col++){if(col==tb.Columns.Count-1){strCreateTable=strCreateTable+"["+tb.Columns[col].ColumnName+"]"+"varchar(50))";}else{strCreateTable=strCreateTable+"["+tb.Columns[col].ColumnName+"]"+"varchar(50),";}}MessageBox.Show(strCreateTable);stringsqlInsert="";for(inti=0;i<tb.Rows.Count;i++){stringcolvalue="";for(intj=0;j<tb.Columns.Count;j++){if(tb.Rows[i][j]==null)colvalue="null";if(j==tb.Columns.Count-1){colvalue=colvalue+"'"+tb.Rows[i][j].ToString()+"'";}else{colvalue=colvalue+"'"+tb.Rows[i][j].ToString()+"'"+",";}}sqlInsert=sqlInsert+"insertintotable1values("+colvalue+")";}MessageBox.Show(sqlInsert);SqlConnectionconn=newSqlConnection("server=(local);database=pubs;uid=sa;pwd=sa;");conn.Open();try{SqlCommandcmd=newSqlCommand();cmd.Connection=conn;cmd.CommandText=strCreateTable+sqlInsert;cmd.ExecuteNonQuery();}catch(Exceptione){MessageBox.Show(e.Message);}conn.Close();}privateDataSetOLEEXCEL(){OleDbConnectionoleDbConnXls=newOleDbConnection();stringstr;str="Provider=Microsoft.Jet.OLEDB.4.0;";str+="DataSource=E:\001.xls;";str+="ExtendedProperties=Excel8.0;";//oleDbConnXls已申明;oleDbConnXls.ConnectionString=str;try{oleDbConnXls.Open();}catch{MessageBox.Show("打开数据库失败!n请检查数据库服务器后重新运行!");}OleDbDataAdapteroleda=newOleDbDataAdapter("select*from[aaa$]",oleDbConnXls);DataSetds=newDataSet();oleda.Fill(ds);if(oleDbConnXls!=null&&oleDbConnXls.State==ConnectionState.Open){oleDbConnXls.Close();}dataGrid1.DataSource=ds.Tables[0];returnds;}privatevoidForm1_Load(objectsender,System.EventArgse){OLEEXCEL();wirteSql();}}}
解决方案四:
insertintoabc(aa,bb,cc)selectaa,bb,ccfromopendatasource('Microsoft.Jet.OLEDB.4.0','datasource="(Excel在服务器上的绝对路径)";ExtendedProperties=Excel8.0')...[Sheet1$]此方法中的Excel文件必须和数据库在同一台服务器上,如果Excel跟数据库不在同一台服务器上,可以先将Excel文件上传到服务器。两个红色的地方必须一样而且Excel文件的第一行必须是和数据库的字段名一致。也就是说数据库里的字段是aa,bb,cc,那么Excel里的第一行必须是aa,bb,cc,从第二行开始是真正要导入的数据
解决方案五:
谢谢大家,好像leon520qqq0的比较好,我也是这种思想,做一下先,有问题在请教大家
解决方案六:
TO:leon520qqq0OLEEXCEL()在oleda.Fill(ds)这里提示错误:“用户代码未处理Oledbexception找不到可安装的ISAM。”

时间: 2024-08-02 22:05:31

要把excel 导入到SQL server中,试了几种方法都没有成功,求助的相关文章

在SQL Server中使用CLR调用.NET方法实现思路_实用技巧

介绍 我们一起来做个示例,在.NET中新建一个类,并在这个类里新建一个方法,然后在SQL Server中调用这个方法.按照微软所述,通过宿主 Microsoft .NET Framework 2.0 公共语言运行库 (CLR),SQL Server 2005显著地增强了数据库编程模型. 这使得开发人员可以用任何CLR语言(如C#.VB.NET或C++等)来写存储过程.触发器和用户自定义函数. 我们如何实现这些功能呢? 为了使用CLR,我们需要做如下几步: 1.在.NET中新建一个类,并在这个类里

SQL SERVER日志清除的两种方法

server SQL SERVER日志清除的两种方法方法一 一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大1.设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项--&g

SQL Server 优化存储过程的七种方法

原文:SQL Server 优化存储过程的七种方法 优化存储过程有很多种方法,下面介绍最常用的7种. 1.使用SET NOCOUNT ON选项 我们使用SELECT语句时,除了返回对应的结果集外,还会返回相应的影响行数.使用SET NOCOUNT ON后,除了数据集就不会返回额外的信息了,减小网络流量. 2.使用确定的Schema 在使用表,存储过程,函数等等时,最好加上确定的Schema.这样可以使SQL Server直接找到对应目标,避免去计划缓存中搜索.而且搜索会导致编译锁定,最终影响性能

如何将MySQL数据导入到Sql Server中

1.安装mysql数据库的ODBC驱动,mysql-connector-odbc-3.51.19-win32.msi 2.打开控制面板\管理工具\数据源ODBC,在用户DSN中添加一个MySQL ODBC 3.51数据源. 3.在登录login选项卡中输入数据源名称Data Source Name,此处输入MysqlDNS;然后输入服务器 Server,用户User,密码Password,输入正确后选择要导入的数据库.在连接选项connect options中根 据需要设置MySql使用的端口p

将Access数据库中数据导入到SQL Server中的详细方法实例_实用技巧

Default.aspx 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="AccessToSQL.aspx.cs" Inherits="AccessToSQL" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "

SQL Server中合并用户日志表的方法

server 在维护SQL Server数据库的过程中,大家是不是经常会遇到成千上万的类似log20050901 这种日志表,每一个表中数据都不是很多,一个一个打开看非常不方便,或者有时候我们需要把这些表中的资料汇总,一个一个打开操作也是很麻烦.下面就介绍了一种自动化的合并表的方法. 我的思路是创建一个用户存储过程来完成一系列自动化的操作,以下是代码. --存储过程我命名为BackupData,可以使用自己定义的名称. --参数1:@TableTarget 生成的目标表的名称 --参数2:@Ta

SQL Server中减小Log文件尺寸的方法分享_MsSql

首先use [数据库名称];exec sp_helpfile; 使用sp_helpfile查询可知道log 文件的逻辑名称,然后就可以利用DBCC来减小LOG文件BACKUP LOG [数据库名] WITH TRUNCATE_ONLYdbcc shrinkfile ([log文件的逻辑名称],1) 这个方法在MS SQL Server 2008 以及MS SQL Server 2008 R2中不再适用,会提示:TRUNCATE_ONLY is not a valid BACKUP option.

SQL Server中减小Log文件尺寸的方法分享

首先use [数据库名称];exec sp_helpfile; 使用sp_helpfile查询可知道log 文件的逻辑名称,然后就可以利用DBCC来减小LOG文件BACKUP LOG [数据库名] WITH TRUNCATE_ONLYdbcc shrinkfile ([log文件的逻辑名称],1) 这个方法在MS SQL Server 2008 以及MS SQL Server 2008 R2中不再适用,会提示:TRUNCATE_ONLY is not a valid BACKUP option.

获取SQL Server数据库元数据的几种方法_MsSql

元数据简介 元数据 (metadata) 最常见的定义为"有关数据的结构数据",或者再简单一点就是"关于数据的信息",日常生活中的图例.图书馆目录卡和名片等都可以看作是元数据.在关系型数据库管理系统 (DBMS) 中,元数据描述了数据的结构和意义.比如在管理.维护 SQL Server 或者是开发数据库应用程序的时候,我们经常要获取一些涉及到数据库架构的信息: ◆某个数据库中的表和视图的个数以及名称: ◆某个表或者视图中列的个数以及每一列的名称.数据类型.长度.精度