по поводу Excel и ListView прошу помочь!!!!(новичок)

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

MACCEN
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 16.01.2006 (Пн) 1:32

по поводу Excel и ListView прошу помочь!!!!(новичок)

Сообщение MACCEN » 18.01.2006 (Ср) 9:46

Вопрос!!! Я загружаю файл Экселя (он у меня как база данных)
Как сделать так чтобы потом Эксель выгружался из процессов?
Можно спрятать чтобы не грузился Эксель, но в процессах всеравно не убивается.
Еще вопросик, как сделать так чтобы можно было править эту базу средствами программы (нужно раелизовать несколько колонок с забивкой туда данных), чтобы можно было сохранить данные сразу в ту же базу, которую я подгружаю.
Как реализовать подсчет некоторых данных прямо в листе?
Можно ли подсветить разным цветом разные строчки?

!!!!!!!код полностью рабочий!!!!
_________нагрузил конечно, но всеже просьба помочь______________
Код: Выделить всё
'структура Строка-запись
   Structure TLine
      Public opDate As Date
      Public Viddil As String
      Public Operation As String
      'можна додавати колонки
   End Structure

   Private ex As Excel.Application = Nothing

   Dim Lines() As TLine
   Dim LinesCount As Integer

   Dim sa(3) As String   'сколько колонок столько и тут

   Dim i, j As Integer

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      ex = New Excel.Application
      ex.Visible = True    'щооб Ексель став невидимий = False
      '      ListView1.View = View.Details
   End Sub

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      Dim od As New OpenFileDialog

      od.FileName = "*.xls"

      If od.ShowDialog = DialogResult.OK Then
         Dim wb As Excel.Workbook = ex.Workbooks.Open(od.FileName)
         Dim sh As Excel.Sheets = wb.Worksheets
         Dim sheet As Excel.Worksheet = sh.Item(2)
         Dim range As Excel.Range

         For j = 1 To 3
            ListView1.Columns.Add(sheet.Cells(1, j).Value(), ListView1.Width / 3, HorizontalAlignment.Left)
         Next

         ListView1.BeginUpdate()

         For i = 2 To 10
            LinesCount = LinesCount + 1
            ReDim Preserve Lines(LinesCount)
            Lines(LinesCount - 1).opDate = sheet.Cells(i, 1).Value()
            sa(0) = CStr(Lines(LinesCount - 1).opDate)
            Lines(LinesCount - 1).Viddil = sheet.Cells(i, 2).Value()
            sa(1) = Lines(LinesCount - 1).Viddil
            Lines(LinesCount - 1).Operation = sheet.Cells(i, 3).Value()
            sa(2) = Lines(LinesCount - 1).Operation
            ListView1.Items.Add(New ListViewItem(sa))
         Next

         ListView1.EndUpdate()

         'как убить Эксель??

      End If
   End Sub

   Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing

   End Sub

   Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

      'фільтрування данних
      'дані в пам'яті - Lines(), а на екрані - ListView1

      ListView1.Items.Clear()

      ListView1.BeginUpdate()

      '---------------------------------
      If cbViddil.Text = "Всі" Then

         For i = 0 To LinesCount - 1

            sa(0) = CStr(Lines(i).opDate)
            sa(1) = Lines(i).Viddil
            sa(2) = Lines(i).Operation

            If (Lines(i).opDate >= dtDate1.Value.Date) And (Lines(i).opDate <= dtDate2.Value.Date) Then
               'можна еще добавить фильтры
               ListView1.Items.Add(New ListViewItem(sa))

            End If

         Next i
         '---------------------------------
      Else
         '---------------------------------
         For i = 0 To LinesCount - 1

            sa(0) = CStr(Lines(i).opDate)
            sa(1) = Lines(i).Viddil
            sa(2) = Lines(i).Operation

            If cbViddil.Text = Lines(i).Viddil Then
               If (Lines(i).opDate >= dtDate1.Value.Date) And (Lines(i).opDate <= dtDate2.Value.Date) Then

                  ListView1.Items.Add(New ListViewItem(sa))

               End If
            End If

         Next i
      End If
      '---------------------------------

      ListView1.EndUpdate()

   End Sub
End Class

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Re: по поводу Excel и ListView прошу помочь!!!!(новичок)

Сообщение Ramzes » 18.01.2006 (Ср) 12:29

Пишу по памяти, могу ошибатся
MACCEN писал(а):Как сделать так чтобы потом Эксель выгружался из процессов?


Код: Выделить всё
ex.activeworkbooks.close

Еще можна посредствам класса System.Reflection

MACCEN писал(а):Можно спрятать чтобы не грузился Эксель, но в процессах всеравно не убивается.

Код: Выделить всё
ex.vivsible=false


Еще вопросик, как сделать так чтобы можно было править эту базу средствами программы (нужно раелизовать несколько колонок с забивкой туда данных), чтобы можно было сохранить данные сразу в ту же базу, которую я подгружаю.

сначала считываешь данные, изменяешь (ексель при этом можно закрыть) потом записываешь их на то-же место откуда взял
Как реализовать подсчет некоторых данных прямо в листе?

формула?
Можно ли подсветить разным цветом разные строчки?

Да, сначала запиши макрос, посмотри на код, а затем вставь этот код в свою программу с учетом тех изменений которые тебе нужно сделать


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29

    TopList