Форум программистов, компьютерный форум, киберфорум
Наши страницы
po4emy4ka
Войти
Регистрация
Восстановить пароль
Оценить эту запись

Работа с Excel фалами в VB.NET

Запись от po4emy4ka размещена 02.02.2014 в 01:11
Метки excel, vb.net

В продолжении темы Открытие документа Эксель в VB.NET поучимся записывать и считывать данные с листов открытых документов Excel.
Нажмите на изображение для увеличения
Название: Excel-VBNET2-1.png
Просмотров: 535
Размер:	12.1 Кб
ID:	2074
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
Imports Microsoft.Office.Interop.Excel  
Public Class Form1  
  
    Dim ExApp As New Application           'Приложение Excel  
    Dim ExWB As Workbook                   'Книга Excel  
    Dim ExWS As Worksheet                  'Лист книги Excel  
 
 
#Region "Форма"  
    Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing  
        ExApp.DisplayAlerts = False  
        If ExWS IsNot Nothing Then ExWS = Nothing  
        If ExWB IsNot Nothing Then ExWB = Nothing  
        ExApp.Quit()  
    End Sub  
#End Region  
 
#Region "Кнопки"  
    'Открываем файл  
    Private Sub btn_OpenFile_Click(sender As Object, e As EventArgs) Handles btn_OpenFile.Click  
        Try  
            ExWB = ExApp.Workbooks.Open("d:\test_vb.xls")  
            ExWS = ExWB.ActiveSheet  
            'Листы книги  
            gb_WS.Enabled = True  
            FillWSList()  
            'Колонки/Строки Запись/Чтение  
            gb_WRInFile.Enabled = True  
        Catch ex As Exception  
            ErrMsgBox(ex)  
        End Try  
    End Sub  
  
    'Закрываем открытый файл  
    Private Sub btn_CloseFile_Click(sender As Object, e As EventArgs) Handles btn_CloseFile.Click  
        Try  
            If ExWB IsNot Nothing Then  
                ExWB.Save()  
                ExWB.Close()  
                ExWB = Nothing  
                gb_WS.Enabled = False  
                gb_WRInFile.Enabled = False  
            End If  
        Catch ex As Exception  
            ErrMsgBox(ex)  
        End Try  
    End Sub  
  
    'Скрываем или отображаем окно приложения Excel  
    Private Sub btn_ShowHideExcel_Click(sender As Object, e As EventArgs) Handles btn_ShowHideExcel.Click  
        ExApp.Visible = Not ExApp.Visible  
        Select Case ExApp.Visible  
            Case True  
                btn_ShowHideExcel.Text = "Скрыть Excel"  
            Case False  
                btn_ShowHideExcel.Text = "Показать Excel"  
        End Select  
    End Sub  
  
    'Добавить лист в книгу  
    Private Sub btn_AddWS_Click(sender As Object, e As EventArgs) Handles btn_AddWS.Click  
        Try  
            ExWB.Worksheets.Add()  
            ExWS = ExWB.ActiveSheet  
            FillWSList()  
        Catch ex As Exception  
            ErrMsgBox(ex)  
        End Try  
    End Sub  
  
    'Удалить лист из книги  
    Private Sub btn_DeleteWS_Click(sender As Object, e As EventArgs) Handles btn_DeleteWS.Click  
        Dim iAllWS As Integer = ExWB.Worksheets.Count  
        If iAllWS > 1 Then  
            Try  
                ExWB.Sheets(cb_WSList.SelectedItem).delete()  
                FillWSList()  
            Catch ex As Exception  
                ErrMsgBox(ex)  
            End Try  
        Else  
            MsgBox("Нельзя удалить последний лист в книге", MsgBoxStyle.OkOnly + MsgBoxStyle.Information)  
        End If  
    End Sub  
  
    'Запишим в Excel свои данные  
    Private Sub btn_Write_Click(sender As Object, e As EventArgs) Handles btn_Write.Click  
        If CheckRowCol() Then  
            Try  
                ExWS.Cells(CInt(tb_Row.Text), CInt(tb_Col.Text)) = tb_Data.Text  
            Catch ex As Exception  
                ErrMsgBox(ex)  
            End Try  
        End If  
    End Sub  
  
    'Считаем данные с листа Excel  
    Private Sub btn_Read_Click(sender As Object, e As EventArgs) Handles btn_Read.Click  
        If CheckRowCol() Then  
            Try  
                tb_Data.Text = ExWS.Cells(CInt(tb_Row.Text), CInt(tb_Col.Text))  
            Catch ex As Exception  
                ErrMsgBox(ex)  
            End Try  
        End If  
    End Sub  
#End Region  
  
    'Позволяет изменить лист в книге и активирует его  
    Private Sub cb_WSList_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles cb_WSList.SelectionChangeCommitted  
        ExWS = ExWB.Sheets(cb_WSList.SelectedItem)  
        ExWS.Activate()  
    End Sub  
 
 
#Region "Вспомогательные функции и процедуры"  
    Private Sub ErrMsgBox(ByRef ex As Exception)  
        If ex Is Nothing Then Exit Sub  
        MsgBox(ex.Source & vbCrLf & ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical)  
    End Sub  
  
    'Обработка только цифровых клавиш  
    Private Sub NumberKeyPress(sender As Object, e As KeyPressEventArgs) Handles tb_Row.KeyPress, tb_Col.KeyPress  
        If Not (Char.IsNumber(e.KeyChar) Or e.KeyChar = vbBack) Then  
            e.Handled = True  
        End If  
    End Sub  
  
    'Заполнение списка листов книги  
    Private Sub FillWSList()  
        Dim iFor As Integer  
  
        cb_WSList.Items.Clear()  
        cb_WSList.BeginUpdate()  
  
        Dim iAllWS As Integer = ExWB.Worksheets.Count  
        For iFor = 1 To iAllWS  
            cb_WSList.Items.Add(ExWB.Sheets(iFor).name)  
        Next  
  
        cb_WSList.EndUpdate()  
        cb_WSList.SelectedIndex = 0  
    End Sub  
  
    'Проверим, что бы были указаны Строка и Колонка  
    Private Function CheckRowCol() As Boolean  
        If tb_Row.Text = "" Then  
            MsgBox("Не заполнено поле Строка.", MsgBoxStyle.OkOnly + MsgBoxStyle.Information)  
            Return False  
            Exit Function  
        End If  
  
        If tb_Row.Text > ExWS.Rows.Count Then  
            MsgBox("Укажите номер строки в пределах от 1 до " & ExWS.Rows.Count, MsgBoxStyle.OkOnly + MsgBoxStyle.Information)  
            Return False  
            Exit Function  
        End If  
  
        If tb_Col.Text = "" Then  
            MsgBox("Не заполнено поле Колонка.", MsgBoxStyle.OkOnly + MsgBoxStyle.Information)  
            Return False  
            Exit Function  
        End If  
  
        If tb_Col.Text > ExWS.Columns.Count Then  
            MsgBox("Укажите номер колонки в пределах от 1 до " & ExWS.Columns.Count, MsgBoxStyle.OkOnly + MsgBoxStyle.Information)  
            Return False  
            Exit Function  
        End If  
  
        Return True  
    End Function  
#End Region  
  
End Class
Excel_VBNET.rar
Размещено в Excel
Просмотров 1436 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.