Files
BeWoPlaner/ReportImp/IBPReports/Export/CustomCsvExporter.cs

86 lines
2.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Text;
using BeWo.Data.Access;
using BeWo.Service.ServiceImplementations;
using BS.Shared.DataContracts;
namespace IBPReports.Export
{
public class CustomCsvExporter
{
public static QueryDC CreateQuery(QueryDC query)
{
DateTime dt = DateTime.Now;
DateTime.TryParse(query.Parameter[0].Value.ToString(), out dt);
query.FileName = String.Format("Fibuexport {0:yyyy-MM}.csv", dt);
var service = new QueryServiceImp();
var data = service.ExecuteQuery(query.Oid, query.Parameter);
var dataTable = BS.Shared.Core.Utils.XMLDeserializeFromString<DataTable>(data);
query.QueryResult = CreateCsvFromDataTable(dataTable, dt);
return query;
}
private static String CreateCsvFromDataTable(DataTable table, DateTime dt)
{
StringBuilder sb = new StringBuilder();
int count = 0;
foreach (DataColumn column in table.Columns)
{
if (sb.Length > 0)
{
sb.Append(";");
}
sb.Append(column.ColumnName);
}
foreach (DataRow row in table.Rows)
{
sb.AppendLine();
count += 1;
string rowNr = count.ToString();
if (count < 10)
{
rowNr = String.Format("00{0}", count);
}
else if (count < 100)
{
rowNr = String.Format("0{0}", count);
}
for (int i = 0; i < row.ItemArray.Length; i++)
{
if (i > 0)
{
sb.Append(";");
}
var item = row[i];
var itemStr = "";
if (i == 0)
{
itemStr = String.Format("{0:dd.MM.yyyy}", item);
}
else if (i == 11)
{
itemStr = String.Format("90{0:yy}{0:MM}{1}", dt, rowNr);
}
else
{
itemStr = String.Format("{0}", item);
}
sb.Append(itemStr);
}
}
return sb.ToString();
}
}
}