Я пытаюсь экспортировать некоторые данные из Sql Server в файл Excel, используя EPPLUS, передавая пользовательский sql select statemet.Это работает нормально, но проблема в том, что поля даты и времени хранятся в UTC в БД, вместо этого я хочу показать их в формате локального часового пояса (es.GMT +2).Есть ли способ сделать это с минимальной потерей производительности?Не имеет значения, будет ли столбец преобразован в таблицу данных или в файл Excel с помощью методов EPPLUS.Я хочу, чтобы в итоговом выводе отображалось время в +2 часа.
Я попытался добавить DataColumn col.ExtendedProperties.Add ("TZ", +2);но ничего не изменилось.DataColumn.DateTimeMode не работает с заполненным DataTable.Я пытаюсь заменить столбцы Excel формулой, добавляя +2 часа, но я не мог понять это.Ниже вы можете увидеть мой код.
string connString = @"Data Source=" + DataSourceName + ";Initial Catalog=" + InitialCatalog + ";User ID=" + UserID + "; Password=" + password + ";Integrated Security=SSPI;";
SqlConnection conn = new SqlConnection(connString);
conn.Open();
//retreive data from the report query
SqlCommand Reportcmd = new SqlCommand(ReportQuery, conn);
Reportcmd.CommandTimeout = 0;
SqlDataAdapter Reportda = new SqlDataAdapter(Reportcmd);
Reportda.Fill(ReportDtTbl);
conn.Close();
//var fileName = "Example-CRM-" + DateTime.Now.ToString("yyyy-MM-dd--hh-mm-ss") + ".xlsx";
MemoryStream stream = new MemoryStream();
using (ExcelPackage pck = new ExcelPackage(stream))
{
ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Report");
Tempaltesheet.Cells[1, 1, 1, 100].Copy(ws.Cells[1, 1, 1, 100]); //Cells[RowStart, ColumnStart, RowEnd, ColumnEnd ]
int colNumber = 1;
foreach (DataColumn col in ReportDtTbl.Columns)
{
if (col.DataType == typeof(DateTime))
{
ws.Column(colNumber).Style.Numberformat.Format = "dd/MM/yyyy hh:mm:ss";
//DataColumn col.ExtendedProperties.Add("TZ", +2);
}
colNumber++;
}
ws.Cells["A2"].LoadFromDataTable(ReportDtTbl, false);
// save our new workbook in the output directory and we are done!
ReportExcel = pck.GetAsByteArray();
//pck.Save();
}
return ReportExcel;