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