Member 14588284 Ответов: 2

Экспорт текста меток на лист excel


привет,
я хочу экспортировать тексты меток из своей формы , но я не могу экспортировать по порядку из формы

в дополнение к

я изменил все метки tabindex в порядке от 0 до 60 но я не могу привести их в порядок

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

    Sub ExportExcel()
         
        System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor
        Dim xlApp As New Excel.Application
        '  Try
        Dim excelBook As Excel.Workbook = xlApp.Workbooks.Add
        Dim excelWorksheet As Excel.Worksheet = CType(excelBook.Worksheets(1), Excel.Worksheet)
        xlApp.Visible = True
 
        With excelWorksheet 
            Dim s
            For Each lbl As Control In groupbox1.Controls
                If TypeOf lbl Is Label Then
                    If lbl.Left = 8 Then
                        s = s + 1
                        .Cells(s, 1).value = lbl.Text
                    End If
                End If
            Next lbl
            .Rows("1:" & .Rows.Count).Font.Size = 9
            .Rows("1:1").Font.FontStyle = "Bold"
            .Rows("1:1").Font.Size = 10
            .Cells.Columns.AutoFit()
            .Cells.Select()
            .Cells.EntireColumn.AutoFit()
            .Cells(1, 1).Select()
            If (Not System.IO.Directory.Exists("c:\sekreterya")) Then
                System.IO.Directory.CreateDirectory("c:\sekreterya")
            End If
            Dim misValue As Object = System.Reflection.Missing.Value

            .SaveAs("c:\sekreterya\gelirtablosu.xlsx")
        End With
        xlApp.Visible = True
        System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default
        xlApp = Nothing

    End Sub
End Class

Maciej Los

Вы хотите отсортировать их по TabIndex?

Member 14588284

да,

2 Ответов

Рейтинг:
0

Maciej Los

Если вы хотите сохранить значение TabIndex, чтобы иметь возможность сортировать данные на основе этого значения...

For Each lbl As Control In groupbox1.Controls
    If TypeOf lbl Is Label Then
        If lbl.Left = 8 Then
            s = s + 1
            .Cells(s, 1).value = lbl.Text
            .Cells(s, 2).value = lbl.TabIndex 'save TabIndex
        End If
    End If
Next lbl


Рейтинг:
0

Member 14588284

я меняю коды вот так и решил проблему


With excelWorksheet
    Dim s
    On Error Resume Next
    For Each lbl As Control In groupbox1.Controls
        If TypeOf lbl Is Label Then
            If lbl.Left = 8 Then
                s = s + 1
                For Each lbl2 In groupbox1.Controls
                    If lbl2.TabIndex * 1 = s - 1 And lbl.Left = 8 Then
                        ' MsgBox(lbl2.TabIndex * 1 & vbLf & s - 1)
                        .Cells(s, 1).value = lbl2.Text

                    ElseIf (lbl2.TabIndex * 1) = (s - 1) + 100 And lbl.Left = 8 Then
                        .Cells(s, 2).value = lbl2.Text * 1


                    End If
                Next
                'MsgBox(lbl.TabIndex * 1 & vbLf & s - 1)

            End If
        End If
    Next lbl


phil.o

lbl2.Text * 1
Я был бы удивлен, что это вообще компилируется.
И какой цели служат все эти умножения на единицу?

Member 14588284

я делаю это потому, что lbl2.text получает текстовый формат excel
когда я пишу *1, то получаю числовой формат

phil.o

Рано или поздно, используя Option Strict Off войдет и сильно укусит тебя.
В первую очередь вам следует использовать правильные типы и функции синтаксического анализа:
Int32.Parse(lbl2.Text)
Более того, эти умножения на единицу бесполезны, когда у вас уже есть целочисленное значение (умножение на единицу-инвариантная операция); например, умножение TabIndex свойство по одному не приносит ничего полезного; в лучшем случае это будет обрезано компилятором, но вы не должны полагаться на это.

Member 14588284

Типа int32.Синтаксический анализ(lbl2.Текст)
я использовал но это дозированная работа

phil.o

Пожалуйста, дайте определение "не работает".

Member 14588284

Типа int32.Синтаксический анализ(lbl2.Текст)
Когда я пишу этот код, то не могу получить никаких данных

Maciej Los

Вам нужно определить переменную:

Dim someVar As Integer =  Int32.Parse(lbl2.Text)
'later
.Cells(s, 2).value =someVar

Member 14588284

я изменился ,
Но все данные пришли "0"