将数据加载到EXCEL中的指定行

时间:2017-09-15 00:39:45

标签: c# excel ssis

我是C#的新手,在网络上有一些帮助我已经能够将数据从SQL Server加载到EXCEL中,并带有相应数据的单张表。

我应该补充一点,我正在尝试使用SSIS包“脚本任务”来完成此任务。 C#脚本。

现在我想在A7行而不是A1中插入数据。我已经尝试过“插入[9442 $ A7:A7](col ...)VALUES ......但是我收到了一个语法错误。可能很容易解决,但我似乎可以搞清楚。

  

错误:System.Data.OleDb.OleDbException:Microsoft Access数据库   引擎找不到对象'9442A7:A7'。确保对象   存在,并且您正确拼写其名称和路径名称。如果   '9442 A7:A7'不是本地对象,请检查您的网络连接或   联系服务器管理员。

以下是我在EXCEL中创建和加载数据的相关代码。

提前致谢。

//Use OLE DB Connection and Create Excel Sheet
Excel_OLE_Con.ConnectionString = connstring;
Excel_OLE_Con.Open();
Excel_OLE_Cmd.Connection = Excel_OLE_Con;
Excel_OLE_Cmd.CommandText = "Create table [" + ColumnValue + "] (" + TableColumns + ")";
Excel_OLE_Cmd.ExecuteNonQuery();


//Write Data to Excel Sheet from DataTable dynamically
foreach (DataTable table in ds.Tables)
{
    String sqlCommandInsert = "";
    String sqlCommandValue = "";
    foreach (DataColumn dataColumn in table.Columns)
    {
        sqlCommandValue += dataColumn + "],[";
    }

    sqlCommandValue = "[" + sqlCommandValue.TrimEnd(',');
    sqlCommandValue = sqlCommandValue.Remove(sqlCommandValue.Length - 2);
    //sqlCommandValue = sqlCommandValue.Replace(",", " ");
    sqlCommandInsert = "INSERT into [" + ColumnValue + "A7:A7" + "] (" + sqlCommandValue + ") VALUES(";

    int columnCount = table.Columns.Count;
    foreach (DataRow row in table.Rows)
    {
        string columnvalues = "";
        for (int i = 0; i < columnCount; i++)
        {
            int index = table.Rows.IndexOf(row); 
            columnvalues += "'" + table.Rows[index].ItemArray[i] + "',";   

        }
        columnvalues = columnvalues.TrimEnd(',');
        var command = sqlCommandInsert + columnvalues + ")";
        //MessageBox.Show(command);
        Excel_OLE_Cmd.CommandText = command;
        Excel_OLE_Cmd.ExecuteNonQuery();
    }

}
Excel_OLE_Con.Close();

1 个答案:

答案 0 :(得分:0)

为此使用数据流任务,而不是脚本任务。使用SQL Server数据流组件选择数据,并将结果集映射到Excel文件输出数据流组件。

如果您希望您的数据在A7上开始(我假设它意味着&#34;第一列但在第七行&#34;),我99%确定您可以在Excel文件上设置属性输出组件使用6行作为&#34;标题行&#34; - 这将在第7行开始您的数据。