あなたは、それはまた、ピボットないとしてこれを好きになるだろう:C#スクリプトコンポーネントのソースを使用して
:
は、名前空間を追加します。 のSystem.Data.OleDbを使用します。
は、あなたの4つの出力列とsselectデータ型を追加します。
は、新しい行のセクションにコードを追加します。
public override void CreateNewOutputRows()
{
/*
Add rows by calling the AddRow method on the member variable named "<Output Name>Buffer".
For example, call MyOutputBuffer.AddRow() if your output was named "MyOutput".
*/
string fileName = @"C:\test.xlsx";
string SheetName = "Sheet1";
string cstr = "Provider.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";
OleDbConnection xlConn = new OleDbConnection(cstr);
xlConn.Open();
OleDbCommand xlCmd = xlConn.CreateCommand();
xlCmd.CommandText = "Select * from [" + SheetName + "]";
xlCmd.CommandType = CommandType.Text;
OleDbDataReader rdr = xlCmd.ExecuteReader();
//int rowCt = 0; //Counter
while (rdr.Read())
{
for (int i = 2; i < rdr.FieldCount; i++) //loop from 3 column to last
{
Output0Buffer.AddRow();
Output0Buffer.ColA = rdr[0].ToString();
Output0Buffer.ColB = rdr[1].ToString();
Output0Buffer.FactName = rdr.GetName(i);
Output0Buffer.FactValue = rdr.GetDouble(i);
}
//rowCt++; //increment counter
}
xlConn.Close();
}
あなたは伝説のキースです!私がしただけの調整は Output0Buffer.ScenarioValue = rdr.IsDBNull(i)== true? 0:rdr.GetDouble(i); – Raymondo
を経由するDBNullに対処するにはこれで完了しますが、nullのレコードを作成したくない場合はif文で出力バッファをラップしますif(!rdr.IsDBNull(i)) – KeithL