hareshdgr8 Ответов: 3

Выпуск столбца дата время при экспорте в excel в VB.NET


При экспорте столбец со значением содержит 04-12-2019 15:35:22 автоматическое изменение Excel на 12-04-2019 15:35:22
Я не знаю, почему excel делает это, пожалуйста, помогите мне

Что я уже пробовал:

я попробовал следовать коду во время экспорта
ExcelApp.Cells(j, k + 1) = Format(Date.Parse(frmReportWizard.dgvData.Пункт(l, i).значение.ToString), "dd/MM/yyyy hh:mm:ss")

ExcelApp.Cells(j, k + 1).NumberFormat = "dd/MM/yyyy HH:mm:ss;@"

3 Ответов

Рейтинг:
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

сэр, есть ли еще какой-нибудь способ, которым вы можете помочь сэру ... пожалуйста