在网上找了很多资料,都不可行,只好自己做了.
根据以下资料:
1、http://topic.youkuaiyun.com/t/20051130/17/4429193.html
Access中有一个帮助这样写的:
SELECT field1[, field2[, ...]] INTO newtable [IN externaldatabase]
FROM source
SELECT...INTO 语句包含以下部分:
部分 说明
field1,field2 要复制到新表中的字段的名称。
newtable 要创建的表的名称。它必须符合标准命名规则。如果 newtable 即为现有表的名称,会发生一个可捕捉的错误。
externaldatabase 外部数据库的路径。有关路径的详细描述,请参阅 IN 子句。
source 从中选择记录的现有表的名称。它可以是单个或多个表或查询。
==
导入到SQLserver的语句很简单
select * into 新表名from OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=excel文件名',表名$)
==
对于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();
2、http://maocom.com/resources/MSSQL/dasqlin.htm
IN 子句
标识出外部数据库中的表,例如dBASE或Paradox数据库,或Microsoft Jet外部数据库,Microsoft Jet数据库引擎能够与之相连。
语法
标识目标表:
[SELECT | INSERT] INTO destination IN
{path | ["path" "type"] | ["" [type; DATABASE = path]]}
标识数据源表:
FROM tableexpression IN
{path | ["path" "type"] | ["" [type; DATABASE = path]]}
以下为c#代码:
string sql="insert into gongshi(nsrbsh,nsrname,fzr,jydz,hdse,gstime) select f1,f2,f3,f4,f5,f6 from [sheet1$] in '"+Server.MapPath("dbase/aaa.xls")+"' 'Excel 8.0;HDR=no;IMEX=1;'";
OleDbConnection conn00=new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source="+Server.MapPath("dbase/zhengguan#xsgs.mdb"));
conn00.Open();
OleDbCommand comm00=new OleDbCommand(sql,conn00);
comm00.ExecuteNonQuery();
conn00.Close();