将数据从表导入excel文件错误

时间:2014-07-10 17:50:17

标签: sql-server excel sql-server-2008-r2 ssis

我正在将数据传输到格式化的Excel工作表。我在数据流任务中的目标是excel,当我尝试执行数据流任务时我遇到错误我试图将设置更改为64位为false。 有人可以帮助我出错的地方。

    [Excel Destination [301]] Error: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80004005.
[Excel Destination [301]] Error: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR.  The "input "Excel Destination Input" (312)"
 failed because error code 0xC020907B occurred, and the error row disposition on "input "Excel Destination Input" (312)" 
 specifies failure on error. An error occurred on the specified object of the specified component.  There may be error messages
  posted before this with more information about the failure.
[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PROCESSINPUTFAILED.  The ProcessInput method on component "Excel Destination" 
(301) failed with error code 0xC0209029 while processing input "Excel Destination Input" (312). The identified component returned 
an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running. 
 There may be error messages posted before this with more information about the failure.

2 个答案:

答案 0 :(得分:2)

试试这个

在DataTable中获取数据,然后使用此功能

 public void ExportToExcel_AsXlsFile(DataTable dt, string file_name)
        {
            var grid = new GridView();
            grid.DataSource = dt;
            grid.DataBind();
            Response.ClearContent();
            Response.Buffer = true;
            Response.AddHeader("content-disposition", "attachment; filename='" + file_name + "'.xls");
            Response.ContentType = "application/ms-excel";
            Response.Charset = "";
            StringWriter sw = new StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            grid.RenderControl(htw);
            Response.Output.Write(sw.ToString());
            Response.Flush();
            Response.End();
        }

答案 1 :(得分:1)

错误原因:

在本地计算机上创建程序包并在其中创建连接时,可以选择保存该连接的密码。但是,默认情况下,它会加密此密码,以便只能在同一台计算机上使用同一帐户运行程序包时才能解密。仅当Connection Manager使用SQL身份验证或连接到不支持Windows集成身份验证的数据库(例如Oracle)时,这才有效。 因此,在上面的场景中,如果程序包部署到远程Sql Server,它会因“登录失败...”错误而失败,因为它无法解密密码。 (注意:如果部署在本地Sql Server中,它运行正常)

解决: 要解决此问题,您应该选择以下三个选项之一:

1。更改程序包中的所有连接管理器以使用Windows身份验证。 注意:与不支持Oracle身份验证的第三方数据源进行通信时,这不是一个选项。

2. 使用“EncryptSensitiveWithPassword”或“EncryptAllWithPassword”对软件包进行加密,并在每次用户想要编辑/操作软件包时提供软件包密码。

3. 创建配置文件以在Package运行时期间提供连接信息。

参考链接: http://technet.microsoft.com/en-us/library/ms140213.aspx **