本帖最后由 needanothercoder 于 2012-02-11 23:45:19 编辑

解决方案 »

  1.   


    --从官方示例来看你的文件名左右缺少双引号
    This example accesses data from a table on another instance of SQL Server.SELECT   *
    FROM      OPENDATASOURCE(
             'SQLOLEDB',
             'Data Source=ServerName;User ID=MyUID;Password=MyPass'
             ).Northwind.dbo.CategoriesThis is an example of a query against an Excel spreadsheet through the OLE DB provider for Jet.SELECT * 
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
     
    --char改成varchar 可以避免多出来的空格。CREATE PROCEDURE [dbo].[ffmx] @FileName VARCHAR(500) --C:\DiBao\2009年12月发放.XLS
    AS 
        BEGIN
            DECLARE @s NVARCHAR(MAX)        SET NOCOUNT ON ;        --TRUNCATE TABLE SJ_DB_FFMX        SET @s = 'insert SJ_DB_FFMX SELECT [行政区划代码],[家庭编号],[户主姓名],'
            SET @s = @s
                + '[户主身份证号],[低保证号],[银行帐号],[发放时间]=convert(varchar(6),cast([发放时间] as datetime),112),'
            SET @s = @s + '[低保金],[其他补贴金额] '
            SET @s = @s + 'FROM OpenDataSource( ''Microsoft.Jet.OLEDB.4.0'','
            SET @s = @s + '''Data Source=''''' + @FileName
                + ''''';User ID=Admin;Password=;Extended properties=Excel 5.0'') ...[sheet1$]'        SELECT  @s
        END
        --EXEC [ffmx] 'C:\DiBao\2009年12月发放.XLS'如果还不好使的话,是不是这个文件的内容在发生着变化,出现了不符合要求的数据?
      

  2.   

    大侠,谢谢了
    不过不是您所说的问题
    我转win7下,没这毛病了,还晕着,但问题解决了