private void ExecuteQueriesAndSaveToExcel(
ExcelPackage pck,
string connectionstring,
IEnumerable<SqlQuery> queries,
string database,
string worksheetPrefix,
bool autoFitColumns,
int queryTimeoutSeconds
)
{
foreach (var q in queries)
{
string query = GetQueryText(q, database);
string worksheetName = GetWorkSheetName(q.Title, worksheetPrefix);
ExcelWorksheet ws = pck.Workbook.Worksheets.Add(worksheetName);
try
{
ws.Cells["A1"].Value = database;
DataTable datatable = QueryExecutor.Execute(connectionstring, query, queryTimeoutSeconds);
if (datatable.Rows.Count > 0)
{
ExcelRangeBase range = ws.Cells["A2"].LoadFromDataTable(datatable, true);
ws.Row(2).Style.Font.Bold = true;
// find datetime columns and set formatting
int numcols = datatable.Columns.Count;
for (int i = 0; i < numcols; i++)
{
var column = datatable.Columns[i];
if (column.DataType == typeof(DateTime))
{
ws.Column(i + 1).Style.Numberformat.Format = "yyyy-mm-dd hh:MM:ss";
}
}
if (autoFitColumns)
{
range.AutoFitColumns();
}
}
else
{
ws.Cells["A2"].Value = "None Found";
}
}
catch (Exception ex)
{
ws.Cells["A2"].Value = ex.Message;
}
}
}