我在 Visual Studio 2010 中创建了一个 SSIS 包,用于从 MS SQL 数据库中提取数据并将数据插入到我创建的电子表格模板中。我试图让它开始在 A3 处写入输出,但由于我有 B11:C13 中的数据摘要,它总是开始在 A14 中写入。
我也尝试设置 OpenRowset 参数,但由于下面有我希望它启动的数据,它不起作用。
是否可以使用包含的摘要数据做我想做的事情?
我在 Visual Studio 2010 中创建了一个 SSIS 包,用于从 MS SQL 数据库中提取数据并将数据插入到我创建的电子表格模板中。我试图让它开始在 A3 处写入输出,但由于我有 B11:C13 中的数据摘要,它总是开始在 A14 中写入。
我也尝试设置 OpenRowset 参数,但由于下面有我希望它启动的数据,它不起作用。
是否可以使用包含的摘要数据做我想做的事情?
一种解决方法:第一个是首先将您的数据转储到工作表中,然后在 B11:C13 中插入您的摘要。或者您可以使用 SSIS 脚本添加此摘要以使用 OLE 技术驱动 excel 它允许您从 SSIS 制作流程。下面的代码片段插入 A6:B6 单元格:
using System;
using System.Drawing;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
System.Data.OleDb.OleDbConnection MyConnection ;
System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
string sql = null;
MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\\csharp.net-informations.xls';Extended Properties=Excel 8.0;");
MyConnection.Open();
myCommand.Connection = MyConnection;
sql = "Insert into [Sheet1$] (id,name) values('5','e')";
myCommand.CommandText = sql;
myCommand.ExecuteNonQuery();
MyConnection.Close();
}
catch (Exception ex)
{
MessageBox.Show (ex.ToString());
}
}
}
}
此摘要也可以从宏中添加(因此您必须在 excel 文件中转储数据后运行它),但这并不有趣,因为它将您的应用程序拆分为 SSIS 和 Excel 宏不太好... ;-)