Visual Studio 2010 で SSIS パッケージを作成して、MS SQL データベースからデータを抽出し、作成したスプレッドシート テンプレートにデータを挿入しました。A3 で出力の書き込みを開始しようとしていますが、B11:C13 にデータの概要があるため、常に A14 で書き込みを開始します。
OpenRowset パラメータも設定しようとしましたが、開始したい場所の下にデータがあるため、機能しません。
要約データを含めて、私がやりたいことをすることは可能ですか?
Visual Studio 2010 で SSIS パッケージを作成して、MS SQL データベースからデータを抽出し、作成したスプレッドシート テンプレートにデータを挿入しました。A3 で出力の書き込みを開始しようとしていますが、B11:C13 にデータの概要があるため、常に A14 で書き込みを開始します。
OpenRowset パラメータも設定しようとしましたが、開始したい場所の下にデータがあるため、機能しません。
要約データを含めて、私がやりたいことをすることは可能ですか?
回避策: 1 つ目は、最初にデータをワークシートにダンプし、その後、要約を 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 マクロがあまり良くないため、面白くありません... ;-)