Excel рассматривает столбец даты как общий при экспорте в Excel с использованием C # - PullRequest
0 голосов
/ 17 мая 2018

Я использую библиотеку EPPlus для экспорта отчета в Excel.Один из столбцов имеет тип даты, но после экспорта в Excel, когда я открываю этот файл, он обрабатывает этот столбец как «Общий», если только я не щелкну по нему правой кнопкой мыши и не установлю его тип «Дата».

Послемой код:

private void ExportToExcel(DataTable dataTable)
{
    //Althought the column type is already date in dataTable but even if I use following line Excel doesn't treat it as Date
    dataTable.Columns["Created On"].DataType = typeof(DateTime);

    foreach (DataRow row in dataTable.Rows)
    {
        row["Created On"] = Convert.ToDateTime(row["Created On"]. 
 ToString()).ToString("yyyy-MM-dd");
    }

    ExcelPackage excel = new ExcelPackage();
    var workSheet = excel.Workbook.Worksheets.Add("MyReport");
    var totalCols = dataTable.Columns.Count;
    var totalRows = dataTable.Rows.Count;
    string fileName = "MyReport[" + DateTime.Now.ToString("yyyy-MM-dd") + "].xlsx";

    for (var col = 1; col <= totalCols; col++)
    {
        workSheet.Cells[1, col].Value = dataTable.Columns[col - 1].ColumnName;
        workSheet.Cells[1, col].Style.Font.Bold = true;
    }

    for (var row = 1; row <= totalRows; row++)
    {
        for (var col = 0; col < totalCols; col++)
        {
            workSheet.Cells[row + 1, col + 1].Value = dataTable.Rows[row - 1][col];
        }
    }
    workSheet.Cells.Style.Font.Size = 11;
    workSheet.Cells.AutoFitColumns();

//Rest of the code

}

Ниже приведен скриншот того, как этот столбец выглядит в Excel.

Как убедиться, что Excel обрабатывает мой столбец даты как Дата?

enter image description here

1 Ответ

0 голосов
/ 17 мая 2018

Чтобы установить текст в формате DateTime в epplus, вам нужно установить тип формата для ячеек

EG:

1) Для простой короткой даты Выкройка

 workSheet.Cells[row, 3].Style.Numberformat.Format = DateTimeFormatInfo.CurrentInfo.ShortDatePattern;

2) Если вы хотите определенный формат, такой как дата, время, час и т. Д., Тогда

workSheet.Column(dateColIndex).Style.Numberformat.Format = "mm/dd/yyyy hh:mm:ss AM/PM";
...