Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
3 / 3 / 0
Регистрация: 27.10.2011
Сообщений: 66
1

Как вытащить данные из ячейки Excel

01.11.2013, 15:23. Показов 3829. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребята перехожу на новый уровень, то есть пересел на visual basic 2008 express
Но проблем от этого стало еще больше. И так все по порядку:
1. Имеется *.csv файл, который легко читается в среде excel (данные обновляются но количество столбцов остается неизменным)
2. В нем имеется 17 столбцов и неограниченное количество строк по типу все разные.
3. Необходимо с помощью visual basic 2008 express создать запрос на файл AlarmLog.csv
4. В VB 6.0 это выглядело так -
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Form_Activate ()
Dim wb As Workbook
Dim XL As Excel.Application
Fail$=”C:\temp\proga1\AlarmLog.csv”
Set XL = CreateObject (“Excel.Application”)
Set wb = XL.Workbook.open(Fail)
wb.Worksheets(“Лист1”).Activate
 
 
тут я писал какую либо процедуру 
тут я напишу так:  нужно обратится в AlarmLog.csv Лист1 найти в ячейке F n  совпадения и 
присвоить х= Range (“F” n ). Value 
ну и тогдалие   
 
 
wb.Close False
XL.Quit
End Sab
Итак как организовать начальную часть программы ( с Private Sub Form_Activate ()
до wb.Worksheets(“Лист1”).Activate) на visual basic 2008 express

Заранее благодарю!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2013, 15:23
Ответы с готовыми решениями:

Как макросом из ячейки Excel вытащить число?
Есть файл с огромным количеством ячеек, с текстом типа 'Снят с про-ва 100 кг' (текст разный)....

Как вытащить цвет ячейки из Excel в DataGridView?
Здравствуйте! Есть необходимость импорта excel таблицы в DataGridView вместе с цветом ячеек, т. е....

Как вытащить данные из ячейки и разбить их на части
Задача: на главной странице располагается блоки со следующими названиями: Керамическая плитка,...

Как вытащить данные из ячейки в таблице из mdb на форму
Товарищи, обучаюсь основам по книги фленова, параллельно делаю свою програмулину, но вот впал в...

11
1710 / 1198 / 227
Регистрация: 23.12.2010
Сообщений: 1,527
01.11.2013, 16:02 2
Если нет связывания с библиотекой типов Экселя, то wb и xl объявить как Object. Если есть - оставить как есть.
VB.NET
1
2
3
4
5
6
Dim wb As Object
Dim XL As Object
Dim Fail as String="C:\temp\proga1\AlarmLog.csv"
XL = CreateObject ("Excel.Application")
wb = XL.Workbook.open(Fail)
wb.Worksheets("Лист1").Activate
кстати, как мне кажется, в открытой книге будет всего 1 лист и имя у него будет не "Лист1", а имя файла без расширения ( у тебя "AlarmLog"). Зная, что лист всего один, зачем его вообще активировать? Он и так будет активным после открытия. Ну а если сильно надо, то:
VB.NET
1
wb.Worksheets("AlarmLog").Activate
или
VB.NET
1
wb.Worksheets(1).Activate
т.к. нумерация листов и ячеек у экселя с единицы, а не с нуля.
Ну и потом, раз уж речь идет о csv, зачем городить огород с экселем? Ты же теряешь кучу времени на старт экселя и открытие книги. csv - обычный текстовый файл, у которого строки разделены знаками vbcr и vblf или vbcrlf, а значения отдельных ячеек ";". Вот зная это несложно прочитать содержимое файла построчно в массив строк, а затем каждый элемент массива (или только нужный) нарезать Split-ом по символу ";".
ИМХО, намного производительнее будет. Ну или же эти операции проделать со всем содержимым сразу и получить в итоге двухмерный массив данных. И никакой наркотической зависимости программы от наличия развернутого Excel на конечной машине.
2
3 / 3 / 0
Регистрация: 27.10.2011
Сообщений: 66
01.11.2013, 16:21  [ТС] 3
И как это все виде кода написать, без привязки к excel. Файл выглядит таким образом, разделен “tab”

Serial No. Name Severity Raised Time Cleared Time ID Event Type Type Cleared Type Location Info Alarm Source Changed Time Root CSN Common Special Flag Sync Serial No.
1473290 AIR CONDITIONER2 OFF Warning 29.10.2013 12:34 65090 Power Alarm Cabinet No.=0, Subrack No.=40, Slot No.=0, Port No.=7, Board Type=EMU, Site No.=92, Site Type=BTS3900 GSM, Site Name=Dangara Gargara Dangara Gargara No NORMAL 2257061
1473289 AIR CONDITIONER1 OFF Warning 29.10.2013 12:31 65089 Power Alarm Cabinet No.=0, Subrack No.=40, Slot No.=0, Port No.=6, Board Type=EMU, Site No.=58, Site Type=BTS3900 GSM, Site Name=Kulyab 10 Kulyab 10 No NORMAL 2257057
1473288 AIR CONDITIONER2 OFF Warning 29.10.2013 12:29 29.10.2013 12:33 65090 Power Alarm-->Cleared Normally cleared Cabinet No.=0, Subrack No.=40, Slot No.=0, Port No.=7, Board Type=EMU, Site No.=54, Site Type=BTS3900 GSM, Site Name=Kulab Pashadara Kulab Pashadara No NORMAL 2257058

Тут необходимые данные
Name – имя аварии
Raised Time –время появление аварии
Cleared Time – время закрытия аварии
Severity –статус аварии
Alarm Source –путкт возникновения аварии
0
1710 / 1198 / 227
Регистрация: 23.12.2010
Сообщений: 1,527
01.11.2013, 16:33 4
Файл в студию. (прикрепи его к сообщению в расширенном режиме) a то дюже весело текст выглядит.
Код напишу.
1
Памирыч
01.11.2013, 18:40
  #5

Не по теме:

Цитата Сообщение от Юпатов Дмитрий Посмотреть сообщение
Fail
Дим, ты чего? :D

1
Юпатов Дмитрий
01.11.2013, 21:11
  #6

Не по теме:

Цитата Сообщение от Памирыч Посмотреть сообщение
Дим, ты чего?
Дык я оригинальные имена переменных использовал :)

3
3 / 3 / 0
Регистрация: 27.10.2011
Сообщений: 66
01.11.2013, 21:58  [ТС] 7
Основные данные с которыми я буду работать, если каждый столбец поместить в одномерный массив ????

Name – имя аварии
Raised Time –время появление аварии
Cleared Time – время закрытия аварии
Severity –статус аварии
Alarm Source –путкт возникновения аварии
0
3 / 3 / 0
Регистрация: 27.10.2011
Сообщений: 66
01.11.2013, 22:28  [ТС] 8
Файл
Вложения
Тип файла: rar AlarmLog.rar (4.3 Кб, 13 просмотров)
0
1710 / 1198 / 227
Регистрация: 23.12.2010
Сообщений: 1,527
02.11.2013, 00:46 9
Лучший ответ Сообщение было отмечено как решение

Решение

На форме кнопка (Button1) и таблица (DataGridview1) - в ней я просто для демонстрации визуализировал данные.
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
Public Class Form1
 
    Dim DataMatrix As DataTable ' тут мы и будем хранить данные из файла и работать с ними. Отсюда же и сохранять будем изменения в файл
    Dim Sourcefile As String = "E:\Скачанное\AlarmLog.csv" ' путь к файлу
    Dim cellseparator() As Char = {vbTab} ' разделитель данных в строках
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        DataMatrix = Me.ReadData(Sourcefile)
        Me.DataGridView1.DataSource = DataMatrix
    End Sub
 
    Private Function ReadData(ByVal source As String) As DataTable
        ReadData = New DataTable
        Dim Strings() As String = IO.File.ReadAllLines(source, System.Text.Encoding.Default) ' получаем весь файл в виде массива строк
        Dim headers() As String = Strings(0).Split(cellseparator, System.StringSplitOptions.None) ' получаем список заголовков колонок из первой строки
        ' заполняем пустую таблицу колонками в соответствии и их именами
        For Each Str As String In headers
            Dim dc As New DataColumn(Str, GetType(String))
            ReadData.Columns.Add(dc)
        Next
        ' а теперь заполняем ее данными
        For i As Integer = 1 To Strings.Length - 1
            Dim rowdata() As String = Strings(i).Split(cellseparator, System.StringSplitOptions.None)
            ReadData.Rows.Add(rowdata)
        Next
    End Function
 
End Class
Итого мы имеем заполненную данными таблицу DataMatrix, у которой колонки поименованы согласно требуемым именам.
От двухмерного массива я решил отказаться - с таблицей работать намного удобнее.
Почитай: http://msdn.microsoft.com/ru-r... table.aspx
Получить данные из конкретной ячейки:
VB.NET
1
MsgBox(Me.DataMatrix.Rows(15).Item(3))
или
VB.NET
1
MsgBox(Me.DataMatrix.Rows(15).Item("Raised Time"))
Аналогично их можно и менять.
4
3 / 3 / 0
Регистрация: 27.10.2011
Сообщений: 66
03.11.2013, 22:22  [ТС] 10
Это чудо!!!! Огромное спасибо как закончу отпишусь, что получилось
0
195 / 115 / 30
Регистрация: 05.08.2013
Сообщений: 491
05.11.2013, 13:32 11
Можно глупый вопрос? Как узнать координаты выбранной ячейки?
0
1710 / 1198 / 227
Регистрация: 23.12.2010
Сообщений: 1,527
05.11.2013, 16:48 12
Visual Basic
1
2
3
MsgBox ("Style xlA1= " & ActiveCell.Address(ReferenceStyle:=xlA1) & vbCrLf & "Style xlR1C1= " & ActiveCell.Address(ReferenceStyle:=xlR1C1))
' или
MsgBox (ActiveCell.Row & vbCrLf & ActiveCell.Column)
ActiveCell имеет тип Range (встроенный тип Excel). Если делаешь без ссылки на библиотеку excel то у тебя это будет Object. ActiveCell - член Excel.Application
0
05.11.2013, 16:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2013, 16:48
Помогаю со студенческими работами здесь

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

Как вытащить табличные данные с сайта в ячейку Excel
Здравствуйте, помогите вытащить данные средней цены на квадратный метр с этой странички...

Вытащить данные из ячейки
Подскажите пожалуйста... мучаюсь уже целый день... у меня в таблице wp_postmeta созданы свои...

Как вводить данные в ячейки Excel?
как вводить даные в ячейки Excel? vVarSheet=vVarSheets.OlePropertyGet("Item",1);...

Excel 2007 и Win32 Console application. Не выводятся в ячейки Excel данные из приложения
Работаю в Visual Studio 2003. Создал Win32 Console Application. На компьютере Office 2007. Компилю...

Как с помощью макроса автоматически выбрать данные из другого файла Excel в нужные ячейки?
Как с помощью макроса автоматически выбрать данные из другого файла Excel в нужные ячейки?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru