powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / VB.NET и Excel
6 сообщений из 6, страница 1 из 1
VB.NET и Excel
    #32610013
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Меня интересует вот что, хочется создавать файлы не в txt формате, а в Excel. Для этого я переношу данные из DataSet в ячейки таблицы Excel потом закрываю Excel Application.
Но, беда в том, что в процессах эта самая Application остаётся и пропадает только тогда, когда выхожу из VB.NET приложения
Я не могу открыть зозданный файл Excel пока не закрою VB приложение.
Вопрос: как правильно открывать (закрывать) приложение Excel из под VB.NET???
Как правильно открыть файл Excel, созданный в VB.NET???
Люди, кто работал с Excel из под VB.NET - HELP... PLEASE...
P.S. Если предоставленной инфы мало для ответа, могу показать часть кода
...
Рейтинг: 0 / 0
VB.NET и Excel
    #32610155
Flare
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам наступал на эти грабли. Лови:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Function excel_что-то_там()

Dim objXLApp As New Excel.Application

'...чего-то там делаем, открываем или создаем excel-файл, делаем в нем изменения....

objXLApp.ActiveWindow.Close(SaveChanges:=False)
objXLApp.Quit()
objXLApp = Nothing
GC.Collect()

End Function
...
Рейтинг: 0 / 0
VB.NET и Excel
    #32610162
Flare
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе, использовать сброщик мусора [GC.Collect()] так не рекомендуется, но иногда приходится делать это насильно, чтобы выгрузить ентот excel :)
PS. Спрашивай, если что.
...
Рейтинг: 0 / 0
VB.NET и Excel
    #32610184
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flare
В принципе, использовать сброщик мусора [GC.Collect()] так не рекомендуется,

Ага не рекомендуется, а что в этом случае без GC.Collect() будет (может быть когда-нибудь буду использовать Excel :-) )?

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
VB.NET и Excel
    #32610284
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, чувствую рыть надо именно в эту сторону, но пример не срабатывает, посему, приведу код процедуры целиком, может в нём чего не так:
Код: plaintext
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.
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
       Dim EXL As New Excel.Application

        If DataSet11.test.Rows.Count >  0  Then
            If File.Exists(xls) = True Then File.Delete(xls)

            Dim m As Excel.Worksheet
            m = EXL.Workbooks.Add.Worksheets.Add

            For i As Integer =  0  To DataSet11.test.Rows.Count -  1 
                Dim k As Integer
                k +=  1 

                m = EXL.Workbooks.Item( 1 ).Worksheets.Item( 1 )
                m.Rows(k).cells( 1 ) = k.ToString
                m.Rows(k).cells( 2 ) = DataSet11.test.Rows(i).Item("la")
                m.Rows(k).cells( 3 ) = DataSet11.test.Rows(i).Item("lala")
                m.Rows(k).cells( 4 ) = DataSet11.test.Rows(i).Item("lalala")
                m.Rows(k).cells( 5 ) = DataSet11.test.Rows(i).Item("lalalala")
                m.Rows(k).cells( 6 ) = DataSet11.test.Rows(i).Item("lalalalala")
                m.Rows(k).cells( 7 ) = DataSet11.test.Rows(i).Item("lalalalalala")
                Dim g As String
                If (DataSet11.test.Rows(i).Item("lalalalalalala") Is System.DBNull.Value) Then
                    g = "???"
                Else
                    g = DataSet11.test.Rows(i).Item("lalalalalalalal")
                End If
                m.Rows(k).cells( 8 ) = g
                m.Rows(k).cells( 9 ) = DataSet11.test.Rows(i).Item("papapapa")
            Next

            Dim myrange As Excel.Range = m.UsedRange
            myrange.Select()
            With myrange
                .HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter
                .Columns.AutoFit()
            End With

            m.SaveAs(Filename:="c:\proba.xls")

            EXL.Workbooks.Close()
            EXL.Quit()
            EXL = Nothing
            GC.Collect()


            Dim reply As MsgBoxResult = MsgBox("Do You want see file " & """main.xls""" & "???", MsgBoxStyle.YesNo)
            If reply = MsgBoxResult.Yes Then

' Вот здесь к вопросу Sa, Файл не запустится, потому как процесс уже сидит плотно плотно, а как выкинуть его оттуда не знаю...

                System.Diagnostics.Process.Start("c:\proba.xls")
            Else
                Exit Sub
            End If
        Else
            MsgBox("Nothing copy to Excel")
        End If


    End Sub

Само приложение как бы и запускается, но на пол дороги оно как бы зависает и дальше ни ни... sheet...
...
Рейтинг: 0 / 0
VB.NET и Excel
    #32611853
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
круто получилось:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
If Not(EXL is Nothing) Then
  EXL.Quit
  EXL=Nothing
  GC.Collect()
End If
' И дальше
Dim EXL As New Excel.Application
lalalalala.....
' А файл показываем так
 Dim reply As MsgBoxResult = MsgBox("Do You want see file " & """main.xls""" & "???", MsgBoxStyle.YesNo)
            If reply = MsgBoxResult.Yes Then
                 EXL.Visible = True

Многоуважаемый Flare а как у выделенного Range

Код: plaintext
1.
2.
3.
4.
5.
 
With myrange
     .HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter
     .Columns.AutoFit()
End With

Нарисовать границы (желательно "все границы")...???
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / VB.NET и Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]