protected void ExportCSV(object sender, EventArgs e)
{
DataTable ds = new DataTable();
ds.Columns.AddRange(new DataColumn[1] { new DataColumn("Name") });
foreach (GridViewRow roww in GridView1.Rows)
{
if (roww.RowType == DataControlRowType.DataRow)
{
CheckBox chkRow = (roww.Cells[0].FindControl("chkRow") as CheckBox);
if (chkRow.Checked)
{
string name = roww.Cells[1].Text;
string DefaultConnection = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
using (SqlConnection con = new SqlConnection(DefaultConnection))
{
SqlCommand command = new SqlCommand();
using (SqlCommand cmd = new SqlCommand("Select AssignNumber, Stage.StageName,Stage.StationName,AspNetUsers.UserName,RecordedDateTime,StartTime,EndTime,Duration,PauseCount,PauseTotalTime,StageRecord.Count, StageRecord.Notes,Location,VarName,DropOut From TimingProfile Inner Join StudyRecord ON TimingProfile.TimingProfileID = StudyRecord.TimingProfileID Inner Join StageRecord ON StudyRecord.StudyRecordID = StageRecord.StudyRecordID Left Join Stage ON StageRecord.StageID = Stage.StageID Left Join VarAffect ON StageRecord.VarID = VarAffect.VarID Left Join MultiNameValue ON StudyRecord.StudyRecordID = MultiNameValue.StudyRecordID Left Join UserStage ON UserStage.StageID = Stage.StageID Left Join AspNetUsers ON UserStage.UserID = AspNetUsers.Id Where TimingProfile.Name = " + "'"+name+"'"))
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.Connection = con;
sda.SelectCommand = cmd;
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
//Build the CSV file data as a Comma separated string.
string csv = string.Empty;
foreach (DataColumn column
in dt.Columns)
{
//Add the Header row for CSV file.
csv += column.ColumnName + ',';
}
//Add new line.
csv += "\r\n";
foreach (DataRow row in dt.Rows)
{
foreach (DataColumn column in dt.Columns)
{
//Add the Data rows.
csv += row[column.ColumnName].ToString().Replace(",", ";") + ',';
}
//Add new line.
csv += "\r\n";
}
DateTime localdate = DateTime.Now;
//Download the CSV file.
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=MultiStation" + "" + name + " " + localdate + ".csv");
Response.Charset = "";
Response.ContentType = "application/text";
Response.Output.Write(csv);
Response.Flush();
Response.End();
}
}
}
}
}
}
}
SQL管理スタジオでクエリを使用した場合、期間は00:32:39と表示されますが、生成されるCSVでは0.0226736111111111 。これを修正する方法はありますか?C#生成されたCSVは、SQLデータベースから取得したデータの形式を変更します
'0.0226736111111111 * 24 * 60'は' 32.65'(または '32:39')に等しいことに気付きましたか? – Enigmativity
はい、MM:SS:MSから小数点以下の値にフォーマットが変更されたためです。 –
'TimeSpan.FromDays(0.0226736111111111).ToString()'できますか?それは私に "00:32:39"を与えます。 – Enigmativity