86 lines
2.5 KiB
C#
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();
|
|
}
|
|
}
|
|
} |