C # Форматирование столбцов при экспорте данных в Excel - PullRequest
0 голосов
/ 26 ноября 2018

Я знаю, что эта тема обсуждалась, но я думаю, что есть некоторые различия.У меня есть даты, хранящиеся в моей базе данных.Поэтому, когда я экспортирую таблицу данных в EXCEL, она выглядит как изображение.

Вот изображение файла EXCEL:

enter image description here

Мне нужно добавить толькоДата.Не ЧЧ: ММ: СС включены.Мой код вставлен ниже:

Microsoft.Office.Interop.Excel._Application app = new 
Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);
Microsoft.Office.Interop.Excel._Worksheet worksheet = null;
worksheet = workbook.Sheets["Sheet1"];
worksheet = workbook.ActiveSheet;
worksheet.Name = "InternDetails";

for (int i = 1; i < dataGridView3.Columns.Count + 1; i++){
    worksheet.Cells[1, i] = dataGridView3.Columns[i - 1].HeaderText;
}

for (int i = 0; i < dataGridView3.Rows.Count; i++){
    for (int j = 0; j < dataGridView3.Columns.Count; j++){
        worksheet.Cells[i + 2, j + 1] = dataGridView3.Rows[i].Cells[j].Value.ToString();
    }
}

var saveFileDialog = new SaveFileDialog();
saveFileDialog.FileName = "Interns";
saveFileDialog.DefaultExt = ".xlsx";

if (saveFileDialog.ShowDialog() == DialogResult.OK){
    workbook.SaveAs(saveFileDialog.FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
}

Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Поправьте меня, если я ошибаюсь, поскольку то, что я видел на предоставленном скриншоте, состоит из 3 столбцов с датами: statusdate, fplacementdate и periodcomplertion.

Вы пробовали это?таким образом?

Сначала создайте для вас функцию преобразования даты.

public static string convertDateFormat(this string date)
{
                DateTime dateFormat = Convert.ToDateTime(date);
                if (dateFormat != DateTime.MinValue)
                {
                    return String.Format("{0:MM/dd/yyyy}", dateFormat);
                }
                else
                {
                    return "";
                }
}

Затем используйте ее следующим образом

for (int i = 0; i < dataGridView3.Rows.Count; i++){
    for (int j = 0; j < dataGridView3.Columns.Count; j++){
        string formatValue = dataGridView3.Rows[i].Cells[j].Value.ToString();

        if( dataGridView3.Columns[j].HeaderText == "statusdate" || dataGridView3.Columns[j].HeaderText == "fplacementdate" || dataGridView3.Columns[j].HeaderText == "periodcomplertion"){
           formatValue.convertDateFormat();
        }

        worksheet.Cells[i + 2, j + 1] = formatValue;
    }
}
0 голосов
/ 26 ноября 2018

Хорошо, если вы хотите показывать только дату и время, вам следует установить числовой формат .просто посмотрите на код, подобный следующему: SomeCell.NumberFormat="yyyy-mm-dd"

он покажет, например: «2018-05-20»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...