この問題には簡単な解決策があるはずですが、神の愛のために私はそれを理解することはできません!
私は通常、Business Objectsなどのレポートツールを使用しているため、Excelにデータを出力することについてはあまり練習していません。しかし、私は既存のC#Webアプリの既存のレポートを変更しようとしています。Excelシートに25列のデータを追加しています。パラメータを受け入れ、25列のデータを1行出力する簡単なストアドプロシージャを作成しました。次に、この関数を呼び出して、mentee_id
渡すたびに実行します。うまく機能しますが、25列の前に空白の列が追加されます。誰かが何か提案があれば、私はそれを非常に感謝します....
//here is the function that executes the stored procedure:
protected string GetServiceCodes_byColumns(object mentee_id)
{
//string id = mentee_id.ToString();
//string id = "4530"; //for testing
string value = "0";
string retString = string.Empty;
try
{
//Displays current information from the database
string strConn = ConfigurationManager.AppSettings.Get("SQLConnectionString");
SqlConnection myDBConnection = new SqlConnection(strConn);
string sProc = ("[spMSSreport_MenteeSummaryByCenter_ServiceCodes]");
SqlCommand spCmd = new SqlCommand(sProc, myDBConnection);
spCmd.CommandType = CommandType.StoredProcedure;
SqlParameter pCntr = new SqlParameter("@cntr", ddlCenter.SelectedValue);
SqlParameter pStartDate = new SqlParameter("@start", txtStartDate.Text);
SqlParameter pEndDate = new SqlParameter("@end", txtEndDate.Text);
SqlParameter pUserID = new SqlParameter("@userid", mentee_id);
spCmd.Parameters.Add(pCntr);
spCmd.Parameters.Add(pStartDate);
spCmd.Parameters.Add(pEndDate);
spCmd.Parameters.Add(pUserID);
myDBConnection.Open();
SqlDataReader rdr = spCmd.ExecuteReader(); //should retrieve one row with 25 columns
rdr.Read();
for (int i = 0; i < 25; i++)
{
retString += "<td align='right'>" + rdr.GetValue(i).ToString() + "</td>";
}
value = retString;
dr.Close();
myDBConnection.Close();
}
catch (Exception ex)
{
Response.Write(ex);
}
return value;
}
//これが関数を呼び出すaspxのビットです(関数を呼び出す最後の行です)
<ItemTemplate>
<tr valign="top">
<td><%#DataBinder.Eval(Container.DataItem, "MentorName" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "MenteeName" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "MenteeWSUID" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "gender" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "sttype" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "ethniccd")%></td>
<td><%#DataBinder.Eval(Container.DataItem, "center1" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "center2" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "TMPcollege" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "FCOC" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "CAMP" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "SSS" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "CSF" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "Lead1000" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "year" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "term" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "fieldofstudy" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "street" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "city" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "st" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "zip" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "phone" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "email" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "email2" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "AssignedMentor" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "AssignedMentor2" )%></td>
<td><%#DataBinder.Eval(Container.DataItem, "AssignedMentor3" )%></td>
<td><%#DataBinder.Eval(Container.DataItem, "AssignedMentor4" )%></td>
<td><%#DataBinder.Eval(Container.DataItem, "AssignedMentor5" )%></td>
<td><%#DataBinder.Eval(Container.DataItem, "mentor_and_mentee" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "active" ) %></td>
<td><%#DataBinder.Eval(Container.DataItem, "inactive_reason" ) %></td>
<td align="right"><%#GetEngagementLevel(DataBinder.Eval(Container.DataItem, "mentee_id") ) %></td>
<td align="right"><%#DataBinder.Eval(Container.DataItem, "A" ) %></td>
<td align="right"><%#DataBinder.Eval(Container.DataItem, "B" ) %></td>
<td align="right"><%#DataBinder.Eval(Container.DataItem, "C" ) %></td>
<td align="right"><%#DataBinder.Eval(Container.DataItem, "D" ) %></td>
<td align="right"><%#DataBinder.Eval(Container.DataItem, "E" ) %></td>
<td align="right"><%#DataBinder.Eval(Container.DataItem, "F" ) %></td>
<td align="right"><%#DataBinder.Eval(Container.DataItem, "G" ) %></td>
<td align="right"><%#DataBinder.Eval(Container.DataItem, "H" ) %></td>
<td align="right"><%#DataBinder.Eval(Container.DataItem, "I" ) %></td>
<td align="right"><%#DataBinder.Eval(Container.DataItem, "J" ) %></td>
<td align="right"><%#DataBinder.Eval(Container.DataItem, "K" ) %></td>
<td align="right"><%#DataBinder.Eval(Container.DataItem, "L" ) %></td>
<td align="right"><%#DataBinder.Eval(Container.DataItem, "M" ) %></td>
<td align="right"><%#DataBinder.Eval(Container.DataItem, "N" ) %></td>
<td align="right"><%#DataBinder.Eval(Container.DataItem, "O" ) %></td>
<td align="right"><%#GetServiceCodes_byColumns(DataBinder.Eval(Container.DataItem, "mentee_id") )%></td>
</tr>
</ItemTemplate>