Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / VB.NET и Excel / 6 сообщений из 6, страница 1 из 1
19.07.2004, 10:47
    #32610013
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB.NET и Excel
Меня интересует вот что, хочется создавать файлы не в 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
19.07.2004, 11:30
    #32610155
Flare
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB.NET и Excel
Сам наступал на эти грабли. Лови:

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

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

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
19.07.2004, 12:23
    #32610284
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB.NET и Excel
Да, чувствую рыть надо именно в эту сторону, но пример не срабатывает, посему, приведу код процедуры целиком, может в нём чего не так:
Код: 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
20.07.2004, 10:24
    #32611853
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB.NET и Excel
круто получилось:
Код: 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
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / VB.NET и Excel / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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