将EXCEL 数据导入到ACCESS中的代码

来源:互联网 发布:java length size 编辑:程序博客网 时间:2024/06/05 18:24

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

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()

原创粉丝点击