Рейтинг:
8
hareshdgr8
Проблема решается с помощью трюка
я просто добавляю пробел, чтобы он занимал текст, а не столбец даты и времени
ExcelApp.Cells(j, k + 1) = "" & Format(Date.Parse(frmReportWizard.dgvData.Пункт(l, i).значение.ToString), "dd/MM/yyyy hh:mm:ss")
:-) другого способа я не нашел
CHill60
Надеюсь вам не нужно ничего делать с этой датой в Excel
Рейтинг:
2
CHill60
Попробуй
ExcelApp.Cells(j, k + 1) = Date.Parse(frmReportWizard.dgvData.Item(l, i).Value)
Конечно, я предполагаю, что вы правильно настроили свой datagridview.
Внимательно посмотрите на то, что @OriginalGriff говорит вам в решении 1 и последующем комментарии
- Строки не должны использоваться для дат
- Этот
Формат[
^] функция возвращает строку
- Этот
значение datetime.Метод Синтаксического Анализа [
^] возвращает дату и время. Интересно я так и думал
date.Parse
разве Javascript не был VB.NET
Если вы абсолютно настаиваете на использовании строк, то используйте формат гггг-ММ-ДД или гггг-МММ-ДД, чтобы не было никакой двусмысленности
Richard Deeming
Date
есть VB.NET's псевдоним для the DateTime
тип. :)
CHill60
Д'о! Прошло уже много лет с тех пор, как я смотрел на него. VB.NET в гневе и теперь моя память уходит! Должно быть пора на пенсию :-)
Richard Deeming
Кроме ответов на вопросы здесь, я еще не смотрел VB.NET и так уже много лет. Но по какой-то причине мой мозг, кажется, цепляется за все эти бесполезные мелочи. :)
hareshdgr8
сэр сделал но тот же вопрос почему это произошло не знаю помогите по другому если вы нашли какой нибудь другой ответ
Richard Deeming
Тогда это звучит так Date.Parse
возвращает неверное значение. Вероятно, это будет связано с региональными настройками вашего компьютера.
Вам нужно будет отладить свой код и проверить, что он возвращает.
hareshdgr8
сэр, я проверил, но моя региональная настройка идеальна, сэр, если она не идеальна, то мой другой, почему моя другая дата не изменилась, я не могу понять, помогите мне, где я ошибаюсь ... если я введу то же самое с sapec и после этого введу значение, оно будет идеальным, как ExcelApp.Cells(j, k + 1) = "" & Format(Date.Parse(frmReportWizard.dgvData.Пункт(l, i).значение.ToString), "dd/MM/yyyy hh:mm:ss")
после этого excel не изменил мой формат, почему сэр, я не знаю, но я нашел этот ответ своим собственным способом.. :-)
CHill60
Вы говорите, что проверили свои региональные настройки, но проверили ли вы локаль в Excel - она не обязательно должна соответствовать региональным настройкам вашего компьютера.
Вы также можете принудительно изменить формат в excel - вы еще не сказали, что именно ExcelApp
но если вы используете interop то это будет так
ExcelApp.Cells(j, k + 1).NumberFormat = "MM/dd/yyyy"
Вы также можете использовать (например,)
ExcelApp.Cells(j, k + 1).Value = Date.Parse(frmReportWizard.dgvData.Item(l, i).Value, New CultureInfo("en-US"))
Гораздо лучше выяснить, в чем проблема, чем просто собрать что-то вместе, как вы это сделали. Ваши пользователи будут вам благодарны.
Рейтинг:
1
OriginalGriff
Просто: не используйте строки. Когда вы используете дату в Строковой форме, она должна быть интерпретирована и в зависимости от настроек в системе или даже на листе может быть неправильной или даже недействительной. Например, 01/02/03 1 февраля 2003 года, 2 января 2003 года или 3 февраля 2001 года? США (и нигде больше) предполагают первое, Европа - второе, Япония и ИСО-третье.
Передайте значение как DateTime, и оно должно "просто работать".
hareshdgr8
ExcelApp.Cells(j, k + 1) = Format(Date.Parse(frmReportWizard.dgvData.Элемент(л, я).Значение), "ДД/ММ/гггг чч:мм:СС")
сэр я изменил это но безрезультатно
OriginalGriff
Это все еще использует формат, который преобразует его в текстовую строку ...
Dave Kreskowiak
Ты ведь вообще не читал ответ ОГА, не так ли?
hareshdgr8
сэр, есть ли еще какой-нибудь способ, которым вы можете помочь сэру ... пожалуйста