Files
C.TRACK/C-TRACK/doExport.aspx.cs
T
2018-11-21 22:41:26 +01:00

88 lines
2.4 KiB
C#

using AppData;
using System;
using System.Data;
using System.Text;
namespace C_TRACK
{
public partial class doExport : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string delimiter = ",";
//prepare the output stream
Response.Clear();
Response.ContentType = "text/csv";
Response.AppendHeader("Content-Disposition", "attachment; filename=ctrack_report.csv");
string value = "";
StringBuilder builder = new StringBuilder();
// recupero oggetti parametrici...
string from = Request.QueryString["from"];
string to = Request.QueryString["to"];
DateTime dateFrom = DateTime.Today.AddYears(-1);
DateTime dateTo = DateTime.Today.AddDays(1);
// se è diverso da vuoto faccio parse...
if (from != "" && from !=null)
{
DateTime.TryParse(from, out dateFrom);
}
if (to != "" && to != null)
{
DateTime.TryParse(to, out dateTo);
}
// leggo tabella
var dt = dataLayer.man.taTR.getByFilt("", dateFrom, dateTo);
//write the csv column headers
for (int i = 0; i < dt.Columns.Count; i++)
{
value = dt.Columns[i].ColumnName;
// Implement special handling for values that contain comma or quote
// Enclose in quotes and double up any double quotes
if (value.IndexOfAny(new char[] { '"', ',' }) != -1)
builder.AppendFormat("\"{0}\"", value.Replace("\"", "\"\""));
else
{
builder.Append(value);
}
Response.Write(value);
Response.Write((i < dt.Columns.Count - 1) ? delimiter : Environment.NewLine);
builder.Clear();
}
//write the data
foreach (DataRow row in dt.Rows)
{
for (int i = 0; i < dt.Columns.Count; i++)
{
value = row[i].ToString();
// Implement special handling for values that contain comma or quote
// Enclose in quotes and double up any double quotes
if (value.IndexOfAny(new char[] { '"', ',' }) != -1)
builder.AppendFormat("\"{0}\"", value.Replace("\"", "\"\""));
else
{
builder.Append(value);
}
Response.Write(builder.ToString());
Response.Write((i < dt.Columns.Count - 1) ? delimiter : Environment.NewLine);
builder.Clear();
}
}
Response.End();
}
}
}