Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.87/141: Рейтинг темы: голосов - 141, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 36

Как работать с файлом Excel, читать, записывать данные

15.06.2012, 19:07. Показов 26772. Ответов 71
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Вот, в общем, решил поинтересоваться Вашими советами насчёт моей проблемы.
Я имею некую «Базу данных» в Excel, т.е. Калькуляция блюд. В калькуляцию входят Название блюда и что нужно для него приготовления(ингредиенты), сколько чего надо гр\кг, стоимость и суммы, в общем, большая таблица.
А так же я имею похожую таблицу калькуляции, которую постоянно приходится заполнять вручную. Немного видоизменённая таблица, но большинство данных надо брать с прежней калькуляции ( названия блюд, ингредиенты, масса, стоимость и т.п.).

Так вот я бы хотел реализовать это в более автоматизированном виде. Чтобы не заоплнять все вручную, а на компьютере. Как лучше бы это сделать?

Думаю, через Microsoft Visual Studio... Сделать меню, справочники и все такое прочее. Перетащить калькуляцию в СУБД если потребуется ( по-моему можно и так вытаскивать ?). Сделать более комфортный интерфейс для ввода нужной информации или выбора из готовых уже столбцов. Но как мне реализовать коннект сделанного мной интерфейса, с Excel? Т.е Я ввожу в свой так сказать интерфейс информацию или же выбираю из своих баз данных, она должна вписывается в файл Excel в различные указанные графы (наименование, кол-во, виды ингредиентов, стоимости и тп.) И все это сохранять отдельные готовые бланки. Предварительно с интерфейса заполнять их, а все остальные расчеты проведутся в Excel автоматом.

Вот ка кто так. Простите если запутанно написал и грамотей с меня не очень.))) Жду вопросов и ответов. Надеюсь, дадите понять, в каком направлении мне идти. Можно даже мануалы, какие либо)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.06.2012, 19:07
Ответы с готовыми решениями:

Как читать данные из файла и записывать соответствующие значения Total для каждого значения
Помогите, пожалуйста, разобраться с задачей--- У меня файл данных: Democratic 25 Democratic 56 Republican 23 Independent ...

Как работать с XML, но записывать данные не в файл, а в переменную
Здравствуйте! Подскажите как мне работать с XML, но записывать данные не в файл, а в переменную типа string? Обычно я использую такой...

Как читать и записывать данные в файл Excel ?
Доброго времени суток! Подскажите как считывать данные из excel файла и в процессе работы вносить изменения в него. Нужно чтобы после ввода...

71
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 36
17.06.2012, 22:19  [ТС]
Студворк — интернет-сервис помощи студентам
kOS_77, Кстати, вот может подскажете как мне в моем меню, сделать возможность выбирать блюдо? Т.е. сейчас у меня просто в 1тексбокс выводится первая запись ну и естественно по всем калонкам так же.( я могу конечно сделать кнопку,чтобы пролистать их по всей бд), но я хотел бы сделать так: нажал на texbox1(или что можноеще использовать) и вышла строчка всех блюд, или что-то наподобие. Надеюсь внятно объяснил, жду вашего наставничества.
Спасибо уважаемый за ваш труд.
0
 Аватар для ZuMiks
124 / 102 / 5
Регистрация: 25.03.2012
Сообщений: 153
17.06.2012, 22:25
Цитата Сообщение от 30rus Посмотреть сообщение
нажал на texbox1(или что можноеще использовать) и вышла строчка всех блюд
Используйте для этого не TextBox, а ComboBox.
1
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 36
17.06.2012, 23:05  [ТС]
Цитата Сообщение от ZuMiks Посмотреть сообщение
Используйте для этого не TextBox, а ComboBox.
О, спасибо огромное!!!!!

Добавлено через 33 минуты
ZuMiks, Ток, у меня там выводится 1 блюда из базы Access, и все, выбирать в ComboBox нечего(( где то я косячу...
0
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
17.06.2012, 23:38
Их сначала нужно в комбобокс добавить...
1
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 36
18.06.2012, 03:07  [ТС]
kOS_77, спасибо, разобрался, а вот текстоблоки в которые идет другая инфа с Бд не изменяются вслед за Combobox. Что и как лучше сделать?
Что нужно сделать чтобы вслед за комбоблоком все текстоблоки менялись на нужную инфу из бд?
0
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
18.06.2012, 12:17
Создайте событие которое возникает во время выбора пункта из комбобокса, не помню как называется, покапайтесь. В событии пишите примерно такой код:

VB.NET
1
Dim Пункт_комбобокса As Integer =  ComboBox1.slected.item 'Точно не помню как правильно написать
1.Вообщем присваиваем этой переменной выбранную позицию из комбобокса(его индекс - к примеру 5)
2.Присваиваем текстбоксу значение из строки 5 файла базы данных

Будет вечером студия под рукой напишу пример, если к тому времени не разберетесь.
1
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 36
18.06.2012, 17:35  [ТС]
kOS_77, хорошо, спасибо, постараюсь сам разобраться! Кстати такой вопрос, в процессе тестов моих первичных интерфейсов, и заполнения информации с бд в excel файл. Далее сохранения их в новый файл и закрытие программы. Было выявлено, что процессы Excel остаются открытыми постоянно. И приходится их закрывать самому в процессах. Как бы это исправить?
0
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
18.06.2012, 18:04
Вы не первый в этом вопросе...

Тыц
1
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 36
18.06.2012, 19:55  [ТС]
kOS_77, Вот сейчас посидел, что-то не доганяю как сделать связку комбобокса с текстобоксом и тп.
Я вот загрузил базу в комбобокс через таскс- add query... и тп

Добавлено через 1 час 5 минут
kOS_77, я так понимаю, в тексто блоки уже загружать данные из Бд отдельно не надо. а Сразу во все из КомбоБлока? Ведь вся база добавилась.
0
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
18.06.2012, 20:10
kOS_77, я так понимаю, в тексто блоки уже загружать данные из Бд отдельно не надо. а Сразу во все из КомбоБлока? Ведь вся база добавилась.
Да, выбираешь в комбобоксе к примеру "Чай" и в текстбоксы подгружаются все сорта.

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
    Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        'это событие (процедура) будет выполнятся 
        'каждый раз когда в комбобоксе поменяяется значение
 
        '**********************************************************************
        'Пример номер РАЗ
        Dim Номер_выбранного_пункта_в_комбобоксе_имеется_ввиду_его_индекс As Integer = ComboBox1.SelectedIndex
        'эта переменная будет хранить в себе номер выбранного в 
        'комбобоксе пункта, т.е. выбираем 3 сверху строчку и в этой переменной будет цифра 2
        'не забываем что первый пункт имеет индекс 0 (у всех контролов)
 
        TextBox1.Text = Exc.sheets(1).range("A" & Номер_выбранного_пункта_в_комбобоксе_имеется_ввиду_его_индекс)
        'Присваиваем текстбоксу значение из столбца "А" а строка будет сответствовать выбранному номеру в комбобоксе
 
        '**********************************************************************
 
        'Пример номер ДВА
        Select Case ComboBox1.SelectedItem
            Case "Апельсин"
                MsgBox("Сработал текст")
 
                'Или так
                TextBox1.Text = Exc.sheets(1).range("A1")
 
            Case "Яблоко"
                TextBox1.Text = Exc.sheets(1).range("A2")
                'Или так
                MsgBox("Сработал текст")
        End Select
        'и таких Case Может быть сколько угодно
 
        '**********************************************************************
        'Пример номер ТРИ
        Select Case ComboBox1.SelectedIndex
            Case 0
                TextBox1.Text = Exc.sheets(1).range("A1")
                'Или так
                MsgBox("Сработал номер")
            Case 1
                TextBox1.Text = Exc.sheets(1).range("A2")
                'Или так
               MsgBox("Сработал номер")
        End Select
        'и таких Case Может быть сколько угодно
 
    End Sub
End Class
1
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 36
18.06.2012, 20:14  [ТС]
kOS_77, СПасибо огромное тебе! За неоценимиый труд! Сейчас доделаю дела в доме и сяду за это дело!
0
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 36
19.06.2012, 00:18  [ТС]
kOS_77, Вот, час сижу недогоняю как сделать, попробовал на базе примера 1.(( манулы ищу, читаю сижу.
Вот тут ты написал
VB.NET
1
2
3
4
5
6
7
8
Dim Номер_выбранного_пункта_в_комбобоксе_имеется_ввиду_его_индекс As Integer = ComboBox1.SelectedIndex
        'эта переменная будет хранить в себе номер выбранного в 
        'комбобоксе пункта, т.е. выбираем 3 сверху строчку и в этой переменной будет цифра 2
        'не забываем что первый пункт имеет индекс 0 (у всех контролов)
 
        TextBox1.Text = Exc.sheets(1).range("A" & Номер_выбранного_пункта_в_комбобоксе_имеется_ввиду_его_индекс)
 
'Указанное число параметров не соответствует ожидаемому числу. Это вылазиет у меня используя это строчку.
TextBox1.Text = Exc.sheets(1).range Это сразу запись в Excel ??

Вот мой код немного поправил на интерес... Ввел вместо TextBox1.Text = Exc.sheets(1).range просто TextBox1.Text , тогда он отображает некие цифры?! откуда они я вообще не знаю...Хотелось бы чтобы вы мне вправили мозг.
вот весь мой код
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
Public Class Form2
 
    Dim Exc As Object = CreateObject("Excel.Application")
 
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'BaseDataSet.Блюда' table. You can move, or remove it, as needed.
        Me.БлюдаTableAdapter.Fill(Me.BaseDataSet.Блюда)
 
        Exc.workbooks.open("C:\Users\Сергей\Desktop\мои разработки\123\WindowsApplication1\WindowsApplication1\Excel файлы\ОП-17 _Контрольный расчет расхода продуктов.xls") 'Открываем книгу эксель по указанному адресу
        Exc.visible = False 'Видимость книги Эксель - False - Невидима и выполняется все в срытном режиме
        Exc.sheets(1).activate() 'Активируем первый лист в книге (Если необходимо)
        TextBox1.Text = Exc.sheets(1).range("AH28").value
 
 
    End Sub
    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
 
        'это событие (процедура) будет выполнятся 
        'каждый раз когда в комбобоксе поменяяется значение
        '**********************************************************************
        'Пример номер РАЗ
        Dim Номер_выбранного_пункта_в_комбобоксе_имеется_ввиду_его_индекс As Integer = ComboBox1.SelectedIndex
        'эта переменная будет хранить в себе номер выбранного в 
        'комбобоксе пункта, т.е. выбираем 3 сверху строчку и в этой переменной будет цифра 2
        'не забываем что первый пункт имеет индекс 0 (у всех контролов)
 
        TextBox2.Text = ("2" & Номер_выбранного_пункта_в_комбобоксе_имеется_ввиду_его_индекс)
        'Присваиваем текстбоксу значение из столбца "А" а строка будет сответствовать выбранному номеру в комбобоксе
 
    End Sub
   
    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Exc.sheets(1).range("AH28").value = TextBox1.Text
    End Sub
 
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Кнопка сохранения
        Exc.sheets(1).range("E28").value = ComboBox1.Text
        Exc.sheets(1).range("P28").value = TextBox2.Text
        Exc.sheets(1).range("AH28").value = TextBox1.Text
 
        Dim SFD As New SaveFileDialog With {.Filter = "*.xls|*.xls |*.xlsx|*.xlsx"}
        If SFD.ShowDialog = DialogResult.OK Then
            Exc.ActiveWorkbook.SaveAs(SFD.FileName)
        End If
    End Sub
 
End Class
Вот скришот что делается:


сам проект если вдруг надо будет.
проект.rar

да... прошу прощения за то, что так часто вас дергаю.
0
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
19.06.2012, 00:42
Откуда 236 я понял, не понял только почему...

Добавлено через 4 минуты
Цитата Сообщение от 30rus Посмотреть сообщение
TextBox1.Text = Exc.sheets(1).range Это сразу запись в Excel ??
В текстбокс добавляется запись из указанной ячейки открытого файла эксель
1
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 36
19.06.2012, 00:46  [ТС]
kOS_77, может где в коде я намудрил....

Вот типо что я хотел добиться: выбираем блюдо>>далее>>в текстоблок2 вылазиет нужная инфа, у меня цена блюда(если нужна будет эта информация вообще)>>далее>>в 1текстблок я ввожу кол-во продаж. А все остальная информация отправляется в файл excelпри сохранении по разным ячейкам и считается там.
Как из ComboBox (базы данных блюд, которая там содержится) раскидать по ячейкам в файл Excel при сохранении.
0
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
19.06.2012, 00:48
VB.NET
1
TextBox2.Text = ("2" & Номер_выбранного_пункта_в_комбобоксе_имеется_ввиду_его_индекс)
Текстбокс2.Текст = 2 и 36 рублей, сколько и стоит блюдо. В данном случае знак & не складывает а воспринимает как текст, вот и получили 236 рублей.

Добавлено через 1 минуту
Цитата Сообщение от 30rus Посмотреть сообщение
kOS_77, может где в коде я намудрил....

Вот типо что я хотел добиться: выбираем блюдо>>далее>>в текстоблок2 вылазиет нужная инфа, у меня цена блюда(если нужна будет эта информация вообще)>>далее>>в 1текстблок я ввожу кол-во продаж. А все остальная информация отправляется в файл excelпри сохранении по разным ячейкам и считается там.
Как из ComboBox (базы данных блюд, которая там содержится) раскидать по ячейкам в файл Excel при сохранении.
Если я правильно понял, то мы выбрали яйцо, салат и чай, и все это должно добавится в эксель как отчет ? Или наоборот, то что выбрали в комбобоксе остается а все остальное БЕз этого блюда убегает сохраняться в эксель ?
1
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 36
19.06.2012, 00:53  [ТС]
kOS_77, Да, что то типо того!
Ну вот, допустим выбрали борщ- в текстблоке2 вылезла цена. Я ввожу кол-во продаж в текстблок1 и нажимаю сохранить-выбираю куда и называю.
Но все остальная информация с базы данных должна заполниться в excel по ячейкам. Там куча ячеек.
например: с таблицы1: Калькуляционные коды и длинные коды, Так же наименование цена.
таблица2: ингридиенты-их название и масса.
А после как эта вся информация ввелась в excel там происходит расчет.
Прикрепил файл Excel. Вот гляньте, там я могу продать 9 блюд. Ингридиенты могут быть походжие. Вся информация должна автоматом заполнится, кроме сколько было продано блюд.
Вложения
Тип файла: xls ОП-17 _Контрольный расчет расхода продуктов.xls (52.0 Кб, 41 просмотров)
0
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
19.06.2012, 01:02
Так, стоп. Давай так - из какого текстбокса табе нужно добавить в какую ячейку (или наоборот) ?

пример: Из ячейки G15 в Textbox2
Или: Из Textbox1 В ячейку А14
1
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 36
19.06.2012, 01:07  [ТС]
kOS_77, Вот: я выбираю в combobox1 - любое блюдо оно пойдет в ячейку (E28), в Textbox2-(AK28) отображается его цена, в Textbox1 я ввожу Кол-во продаж(AH28).
И соответственно нужно в другие ячейки из бД ввести данные которые будут соответствовать по Бд тому, что я выбираю в Combobox1.
И так выбрать до 9 блюд.
0
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
19.06.2012, 10:42
Пожалуйста.

Код надо вставить в кнопку сохранения и у тебя будет сохраняться каждая позиция в отдельную ячейку. К примеру если ты выберешь первую позицию в комбобоксе и нажмешь сохранить то все сохранится в 28 строку, если 2ую позицию то в 29 строку экселя и т.д.

VB.NET
1
2
3
4
5
Dim Выбор_в_комбобоксе As Integer = ComboBox1.SelectedIndex
 
 Exc.sheets(1).range("E" & Выбор_в_комбобоксе + 28 ).value = ComboBox1.Text
        Exc.sheets(1).range("P" & Выбор_в_комбобоксе + 28 )..value = TextBox2.Text
        Exc.sheets(1).range("AH" & Выбор_в_комбобоксе + 28 ").value = TextBox1.Text
1
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 36
19.06.2012, 12:44  [ТС]
Это определенно работает, но не совсем то, что я хотел. Т.е.

Пример:

1. Combobox1 - например равный ячейки E28 >> выбираем Блюдо, допустим Борщ, выбрали автоматом появляется информация в текст блоках или готова сохранится с БАЗЫ данных.
2. TextBox1 - например равный ячейки AH28 >> является кол-вом продаж по файлу Excel. Я его ввожу сам, т.к. Цена блюд уже есть в базе мне остается сказать экселю сколько я продал блюд. Все остальное по формулам считается в Excel когда инфомрация сохранится с Базы туда.
3. TextBox2 - например равный ячейки AK28 >> является ценой блюда, выводится на экран для доп информации, а выводится она с СУБД Access т.е. ныне база загружена в Комбобокс, значит с комбобокса выгружать надо????

Хочу чтобы с Базы или комбобокс автоматом заполнялась информация, при выборе Названия блюда, с таблицы вытаскивалась его цена, кода и т.п. Или была готова сохранится с этих таблиц сразу в Excel/
Можно ли так сделать? с Combobox? вытащить оттуда нужную информацию с бд??? Эти цены блюд, разные коды, а так же с другой таблицы ингридиентов.
Я могу подключить базу еще раз, отдельно, но она введет информацию прям с 1 строчки по текстблокам и в ексель. А тут нужно чтобы с базы грузились параметры которые соеденины(равные) с ComboBox1 т.е. соответствовали блюду, его цены ингридиенты коды и прочее.
Простите еще раз, не могу внятно сформулировать вам свое желание.
Я стрался сейчас объяснить как надо... Надеюсь теперь мою мысль поняли? Буду на форум поглядывать, ждать ответа.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.06.2012, 12:44

Как читать и записывать данные в файл в Инете?
Как читать и записывать данные в файл в Инете?

Создать пользователя базы данных который сможет читать данные и записывать данные в бд
Собственно вопрос в названии..НА русскомя языке нашел мало нужной инфы...

ExcelDataReader: как записывать и считывать данные в Excel
Здравствуйте! Собственно, пошарился и на сайте, и в интернете в целом. Я не понимаю, как работать с файлами Excel. Нашёл...

Как в Accesse работать с excel-файлом?
Проблема такова: из эксель файла надо перетащить данные в таблицу, но не стандартным импортом, а по-ячеечно(есть ли такое слово?). т.е....

Как в Accesse работать с excel-файлом?
Проблема такова: из эксель файла надо перетащить данные в таблицу, но не стандартным импортом, а по-ячеечно(есть ли такое слово?). т.е....


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru