#excel #vb.net
Вопрос:
Я хочу ознакомиться с расписанием. К сожалению, это не работает. Вместо "3:53"
В1 программа считывает и показывает 0.16
. Как я могу это улучшить? Я использую Microsoft.Office.Interop
. Я уже пытался изменить форматирование в таблице — безрезультатно.
Private xlApp As Excel.Application = New Excel.Application
Private xlWorkBook As Excel.Workbook
'in a Sub:
xlWorkBook = xlApp.Workbooks.Open(filepath)
Dim xlWorkSheet As Excel.Worksheet = CType(xlWorkBook.Worksheets("L7"), Excel.Worksheet)
Dim xlRange As Excel.Range = xlWorkSheet.UsedRange
Dim ER As Excel.Range
Dim ER2 As Excel.Range
Dim Index As Integer = 0
For Zeile As Integer = 1 To xlRange.Rows.Count
ER = CType(xlRange.Cells(Zeile, 1), Excel.Range)
ER2 = CType(xlRange.Cells(Zeile, 2), Excel.Range)
If CStr(ER2.Value) = "..." Then
Continue For
End If
Dim gesplittet As String() = CStr(ER2.Value).Split(":"c)
'...
ER.Value
становится 0,16 вместо «3:53». Я хочу иметь Веревочку.
Комментарии:
1. Просто отформатируйте его как время.
0.161805555555556
это как3:53
хранится в Excel2. Последняя строка опубликованного кода подразумевает, что вы извлекаете информацию о часах/минутах из значения времени. Ячейки Excel, отформатированные по времени, извлекаются как двойной тип данных, как вы обнаружили. Вы можете использовать дату и время. Метод FromOADate(двойной) для преобразования этого значения в структуру даты и времени (только точная в рабочей книге не настроена для использования системы дат 1904 года). Затем вы можете получить доступ к свойствам «Час/минута» из структуры «Дата-время».
Ответ №1:
Значения времени и даты обычно хранятся внутренне совершенно по-разному в программах для электронных таблиц и баз данных. Поэтому вы никогда не получите непосредственно те значения, которые видите, когда получаете исходные значения. В вашем случае кажется, что вы получаете значение времени/даты: дата-это значение перед точкой, а дробные цифры-это доля 24-часового дня.
0.16 * 24 = 3.84 hours
Что означает 3 часа и 0,84 от одного часа:
0.84 * 60 = 50.4 minutes
Я предполагаю, что небольшая разница с вашим ожидаемым значением заключается в том, что значение 0,16 было округленным значением. Используя точное значение и выполняя вычисления, вы должны получить ожидаемый результат.
Комментарии:
1. большое спасибо. Я просто отправил вопрос,когда он тоже пришел мне в голову 🙈