/*******  导出到excel
EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""'/***********  导入ExcelSELECT * 
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions/*动态文件名
declare @fn varchar(20),@s varchar(1000)
set @fn = 'c:\test.xls'
set @s ='''Microsoft.Jet.OLEDB.4.0'',
''Data Source="'+@fn+'";User ID=Admin;Password=;Extended properties=Excel 5.0'''
set @s = 'SELECT * FROM OpenDataSource ('+@s+')...sheet1$'
exec(@s)
*/SELECT cast(cast(科目编号 as numeric(10,2)) as nvarchar(255))+' ' 转换后的别名
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions用sql写成存储过程,然后在程序里调用存储过程即可

解决方案 »

  1.   

    前些天研究了向SQL-server插入数据
    方法1,//新表插入
    SELECT * into Table1 FROM 
    OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)//然后:向已有表插入数据
    INSERT INTO Table1
    SELECT * FROM OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;
    HDR=NO;IMEX=1;database=c:\test2.xls;','select * from [Sheet1$]')方法2,
    使用OpenDataSource进行插入操作,可以实现指定列的插入(同一记录其他列则为NULL)
    insert OPENDATASOURCE
    ('SQLOLEDB','Data Source=服务器ip;User ID=用户名;Password=密码')
    .SXSBD.dbo.Table1(字段1,字段2)
    SELECT 字段1,字段2
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...sheet1$
    要注意,1。使用转义字符。写在程序中应该是c:\\temp\\test1.xls
    2。导入好像只认本机文件,所以需要把excel文件上传到server,写一段代码即可