excel导入 数据库 的 代码 excel导入 数据 库的代码 ......
excel导入数据库的代码

using XFXOA; 
using System; 
using System.Collections; 
using System.ComponentModel; 
using System.Data; 
using System.Data .OleDb ; 
using System.Drawing; 
using System.Web; 
using System.Web.SessionState; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.HtmlControls; 
using System.Web.Security; 
namespace OA 
{  
public class ExceltoAccess : System.Web.UI.Page 
{  
OAConfig OAConfig1=new OAConfig(); 
private void Page_Load(object sender, System.EventArgs e) 
{ 
//try{if(!OAConfig1.LogonChk((Request.Cookies["logonyn"].Value).ToString()))Response.Redirect("/logon_wrong.aspx");}catch{Response.Redirect("/logon_wrong.aspx");} //if (!IsPostBack) 
//{ 
try 
{ OleDbDataReader dr1 = OAConfig1.MyReaderexcel("/source_file.xls","00",3,"SELECT * FROM [ 
   
   空间 
  $]"); 
if(dr1.Read()) 
{ 
do 
{ 
string ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("/targetdb.mdb")+";Jet OLEDB:Database Password=;"; 
OleDbConnection Connother = new OleDbConnection(ConnString); 
if (Connother.State == ConnectionState.Closed)Connother.Open(); 
OleDbCommand MyComm=new OleDbCommand("insert into 空间 (A,B,C,D,E,F,G) values ('"+dr1[0].ToString()+"','"+dr1[1].ToString()+"','"+dr1[2].ToString()+"','"+dr1[3].ToString()+"','"+dr1[4].ToString()+"','"+dr1[5].ToString()+"','"+dr1.ToString()+"')", Connother); 
MyComm.ExecuteNonQuery(); 
MyComm.Dispose(); 
Connother.Close(); 
} 
while(dr1.Read()); } 
else 
{ 
Response.Write("此Excel表是空的"); 
} 
dr1.Close(); 
} 
finally 
{ OAConfig1.CloseConnexcel(); 
} 
Response.Write("此Excel导入ACCESS成功"); } 
 
//public void Button1_click(object sender, System.EventArgs e) 
//{  
//} 
 
#region Web Form Designer generated code 
override protected void OnInit(EventArgs e) 
{ 
InitializeComponent(); 
base.OnInit(e); 
} 
private void InitializeComponent() 
{ 
this.Load += new System.EventHandler(this.Page_Load); 
//this.Button1.Click += new System.EventHandler(this.Button1_click); 
//this.Button2.Click += new System.EventHandler(this.Button2_click); 
} 
#endregion 
} 
}

 

 

 

高分求解 Visual C# 下如何实现从EXCEL把数据导入到access中

楼主netter2003(我知道错了,以后我会及时结贴。) 2005-06-27 10:06:43 在 .NET技术 / ASP.NET 提问

高分求解   Visual   C#   下如何实现从EXCEL把数据导入到access中 问题点数:0、回复次数:13Top

src="/Include/Board.htm?Tags=visual c#,excel,数据,access,ds,source,microsoft,导入,strconn,sheet1" frameborder="0" scrolling="no">



1 楼netter2003(我知道错了,以后我会及时结贴。)回复于 2005-06-27 10:21:38 得分 0

有没有兄弟帮忙呀Top

2 楼akinggmx(为了生活而编程)回复于 2005-06-27 10:23:55 得分 0

有一个比较稳妥但是稍显罗嗦的办法:就是将excel的数据读出然后直接写入access  
  读excel的数据:  
  连接字符串:    
  string   strConn="Provider   =   Microsoft.Jet.OLEDB.4.0   ;   Data   Source   =   '"+"excel路径"+';Extended   Properties=Excel   8.0";  
  然后就可以将excel表作为普通的数据库来操作了,选择,修改,删除...  
  然后将读出的数据再写到access就可以了啊,具体方法不写了Top

3 楼gdami(糖米)回复于 2005-06-27 10:25:12 得分 0

帮忙顶。   呵呵。Top

4 楼systemjava(java)回复于 2005-06-27 10:32:19 得分 0

try   
  {   
  string   strCon   =   "   Provider   =   Microsoft.Jet.OLEDB.4.0   ;   Data   Source   ="+".//excel//Book_project.xls;"+"Extended   Properties=Excel   8.0"   ;   
  OleDbConnection   myConn   =   new   OleDbConnection   (   strCon   )   ;   
  string   strCom   =   "   SELECT   序号,项目编号,项目名称,单位,工程量   FROM   [Sheet1$]   "   ;   
  myConn.Open   (   )   ;   
  OleDbDataAdapter   myCommand   =   new   OleDbDataAdapter   (   strCom   ,   myConn   )   ;   
  DataSet   myDataSet   =   new   DataSet();   
  myCommand.Fill   (   myDataSet   ,   "[Sheet1$]"   )   ;   
  myConn.Close   (   )   ;   
    
  excel_DG.DataMember=   "[Sheet1$]"   ;   
  excel_DG.DataSource   =   myDataSet   ;   
  if(MessageBox.Show("请查看“数据内容”是否正确?","提示",MessageBoxButtons.YesNo)==DialogResult.Yes)   
  {   
  MessageBox.Show("点击导入数据按钮导入数据,原数据将被清除!","提示");   
  btn_imp.Enabled=true;   
  }   
  else   
  {   
  btn_imp.Enabled=false;   
  MessageBox.Show("请重新确认“Excel文件夹”下Excel文件格式内容是否正确!","提示");   
  }   
  }   
  catch   
  {   
  MessageBox.Show("请确认“Excel文件夹”下是否存在“Book_Project.xls”文件");   
  }


   
  有了dataSet还有什么不好做Top

5 楼tigerwen01(小虎)(编程艺术化)回复于 2005-06-27 10:48:32 得分 0

Excel文件的读取  

public   DataSet   ExcelToDS(string   Path)   
  {   
    string   strConn   =   "Provider=Microsoft.Jet.OLEDB.4.0;"   +"Data   Source="+   Path   +";"+"Extended   Properties=Excel   8.0;";   
    OleDbConnection   conn   =   new   OleDbConnection(strConn);   
    conn.Open();       
    string   strExcel   =   "";         
    OleDbDataAdapter   myCommand   =   null;   
    DataSet   ds   =   null;   
    strExcel="select   *   from   [sheet1$]";   
    myCommand   =   new   OleDbDataAdapter(strExcel,   strConn);   
    ds   =   new   DataSet();   
    myCommand.Fill(ds,"table1");         
    return   ds;   
  }


  对于EXCEL中的表即sheet([sheet1$])如果不是固定的可以使用下面的方法得到

string   strConn   =   "Provider=Microsoft.Jet.OLEDB.4.0;"   +"Data   Source="+   Path   +";"+"Extended   Properties=Excel   8.0;";   
    OleDbConnection   conn   =   new   OleDbConnection(strConn);   
    DataTable   schemaTable   =   objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,null);   
    string   tableName=schemaTable.Rows[0][2].ToString().Trim();


  Excel文件的写入

public   void   DSToExcel(string   Path,DataSet   oldds)   
  {   
    //先得到汇总EXCEL的DataSet   主要目的是获得EXCEL在DataSet中的结构   
    string   strCon   =   "   Provider   =   Microsoft.Jet.OLEDB.4.0   ;   Data   Source   ="+path1+";Extended   Properties=Excel   8.0"   ;   
    OleDbConnection   myConn   =   new   OleDbConnection(strCon)   ;   
    string   strCom="select   *   from   [Sheet1$]";   
    myConn.Open   (   )   ;   
    OleDbDataAdapter   myCommand   =   new   OleDbDataAdapter   (   strCom,   myConn   )   ;   
    ystem.Data.OleDb.OleDbCommandBuilder   builder=new   OleDbCommandBuilder(myCommand);   
    //QuotePrefix和QuoteSuffix主要是对builder生成InsertComment命令时使用。   
    builder.QuotePrefix="[";           //获取insert语句中保留字符(起始位置)   
    builder.QuoteSuffix="]";   //获取insert语句中保留字符(结束位置)   
    DataSet   newds=new   DataSet();   
    myCommand.Fill(newds   ,"Table1")   ;   
    for(int   i=0;i<oldds.Tables[0].Rows.Count;i++)   
    {   
      //在这里不能使用ImportRow方法将一行导入到news中,因为ImportRow将保留原来DataRow的所有设置(DataRowState状态不变)。在使用ImportRow后newds内有值,但不能更新到Excel中因为所有导入行的DataRowState!=Added   
      DataRow   nrow=aDataSet.Tables["Table1"].NewRow();   
      for(int   j=0;j<newds.Tables[0].Columns.Count;j++)   
      {   
        nrow[j]=oldds.Tables[0].Rows[i][j];   
      }   
      newds.Tables["Table1"].Rows.Add(nrow);   
    }   
    myCommand.Update(newds,"Table1");   
    myConn.Close();   
  }


  Top

6 楼netter2003(我知道错了,以后我会及时结贴。)回复于 2005-06-27 11:11:16 得分 0

有一个问题  
  如果字段名是不固定的呢?  
  到ACCESE后,表的字段名如何设置呀?Top

7 楼netter2003(我知道错了,以后我会及时结贴。)回复于 2005-06-27 11:16:13 得分 0

to:systemjava(java)  
  ACCESS的字段名如何设定呢?Top

8 楼hchxxzx(NET?摸到一点门槛)回复于 2005-06-27 13:40:19 得分 0

如果你的表是不固定的,而你又是希望根据EXCEL表建立相应的ACCESS表,那么  
  1.你可取所读取的EXCEL的字段名为ACCESS表的字段名  
  2.如果EXCEL也没有字段名,则你只好自己取一个连续别名为字段名了.比如  
  colum1,colum2,colum3(以读取到的excel列顺序为号分开)  
  你完全可以把excel先读取到datagrid控件里面,然后再循环求取并创建.Top

9 楼netter2003(我知道错了,以后我会及时结贴。)回复于 2005-06-27 21:47:23 得分 0

再顶一下,还有兄弟要说说自已的想法吗?  
  ACCESS如果只是一个空的表,字段名也没有。  
  能通过程序建字段吗?Top

10 楼netter2003(我知道错了,以后我会及时结贴。)回复于 2005-06-28 13:23:09 得分 0

upTop

11 楼netter2003(我知道错了,以后我会及时结贴。)回复于 2005-07-01 10:34:19 得分 0

UPTop

12 楼nobody123(没有人)回复于 2005-07-20 00:01:25 得分 0

再顶一下,还有兄弟要说说自已的想法吗?  
  ACCESS如果只是一个空的表,字段名也没有。  
  能通过程序建字段吗?  
   

select   *   into   table1   from     
  OPENROWSET('MICROSOFT.JET.OLEDB.4.0'   
  ,'Excel   5.0;HDR=YES;DATABASE=c:/test.xls',sheet1$)


  Top

13 楼mysterious(空折枝)回复于 2005-07-20 06:42:34 得分 0

openrowset()   
  or   
  opendatasource()