Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/47: Рейтинг темы: голосов - 47, средняя оценка - 4.91
0 / 0 / 1
Регистрация: 21.05.2014
Сообщений: 67

Открыть файл Excel в DataGridView

06.05.2015, 09:13. Показов 9835. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На С#.
Какой код надо в // Insert code to read the stream here этом месте чтоб Excel открылся в DataGridView?
C#
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
private void button1_Click(object sender, EventArgs e)
        {
            Stream myStream = null;
            OpenFileDialog openFileDialog1 = new OpenFileDialog();
 
            openFileDialog1.InitialDirectory = "c:\\";
            openFileDialog1.Filter = "All files (*.*)|*.*";
            openFileDialog1.FilterIndex = 2;
            openFileDialog1.RestoreDirectory = true;
 
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    if ((myStream = openFileDialog1.OpenFile()) != null)
                    {
                        using (myStream)
                        {
                            // Insert code to read the stream here.
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
                }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.05.2015, 09:13
Ответы с готовыми решениями:

Как открыть Excel файл через datagridview?
Всем привет! Мне нужно в программе открывать Excel файл, его редактировать и сохранять. Последние два пункта я выполнил, а первый никак...

Как в datagridview открыть Excel файл? И сохранить его
Как в datagridview c# открыть Excel файл? И сохранить.

В DataGridView открыть фиксированную форму бухгалтерского баланса из Excel
Добрый день, подскажите, пожалуйста, как в datagridview открыть фиксированную форму бухгалтерского баланса из excel? у меня получается...

20
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
06.05.2015, 10:44
Цитата Сообщение от anvaro92 Посмотреть сообщение
чтоб Excel открылся в DataGridView
да вот прям рядышком тема лежит Импорт данных из Excel в DataGridView
1
0 / 0 / 1
Регистрация: 21.05.2014
Сообщений: 67
06.05.2015, 11:17  [ТС]
там я смотрел не получается. OpenFile открывается но дальше да DataGridView не попадает.
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
06.05.2015, 12:17
dataGridView1.Rows.Add( ... ); - описывает количество отображаемых колонок в гриде из екселя
C#
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
 private void button2_Click(object sender, EventArgs e)
        {
            OpenFileDialog openDialog = new OpenFileDialog();
            openDialog.Filter = "Файл Excel|*.XLSX;*.XLS";
            openDialog.ShowDialog();
 
 
           
            try
            {
                ObjExcel = new Microsoft.Office.Interop.Excel.Application();
                //Книга.
                ObjWorkBook = ObjExcel.Workbooks.Open(openDialog.FileName);
                //Таблица.
                ObjWorkSheet = ObjExcel.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet;
                Microsoft.Office.Interop.Excel.Range rg = null;
 
                Int32 row = 1;
                dataGridView1.Rows.Clear();
                List<String> arr = new List<string>();
                while (ObjWorkSheet.get_Range("a" + row, "a" + row).Value != null)
                {
                   //  Читаем данные из ячейки
                 //    rg = ObjWorkSheet.get_Range("a" + row, "f" + row);  //диапазон отображаемых колонок
                    rg = ObjWorkSheet.get_Range("a" + row, "u" + row);
                    foreach (Microsoft.Office.Interop.Excel.Range item in rg)
                    {
                        try
                        {
                            arr.Add(item.Value.ToString().Trim());
                        }
                        catch { arr.Add(""); }
                    }
                    //  dataGridView1.Rows.Add(arr[0], arr[1], arr[2], arr[3], arr[4], arr[5]); //видимые колонки
                    dataGridView1.Rows.Add(arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8], arr[9], arr[10], arr[11], arr[12], arr[13]
                        , arr[14], arr[15], arr[16], arr[17], arr[18], arr[19]);
                    arr.Clear();
                    row++;
                }
                MessageBox.Show("Файл успешно считан!", "Считывание файла", MessageBoxButtons.OK, MessageBoxIcon.Information);
               
             
               
            }
            catch (Exception ex) { MessageBox.Show("Ошибка: " + ex.Message, "Ошибка при считывании excel файла", MessageBoxButtons.OK, MessageBoxIcon.Error); }
            {
 
                ObjWorkBook.Close(false, "", null);
                // Закрытие приложения Excel.
                ObjExcel.Quit();
                ObjWorkBook = null;
                ObjWorkSheet = null;
                ObjExcel = null;
1
0 / 0 / 1
Регистрация: 21.05.2014
Сообщений: 67
06.05.2015, 13:30  [ТС]
AndreyVorobey,
не работает все равно.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
06.05.2015, 13:54
Цитата Сообщение от anvaro92 Посмотреть сообщение
не работает все равно.
голословное утверждение, показывай код.
0
0 / 0 / 1
Регистрация: 21.05.2014
Сообщений: 67
06.05.2015, 14:16  [ТС]
nio,
программы выглядеть вот так


C#
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
61
62
63
64
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
 
 
namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openDialog = new OpenFileDialog();
            openDialog.Filter = "Файл Excel|*.XLSX;*.XLS";
            openDialog.ShowDialog();
 
            try
            {
                ObjExcel = new Microsoft.Office.Interop.Excel.Application();
                ObjWorkBook = ObjExcel.Workbooks.Open(openDialog.FileName);
                ObjWorkSheet = ObjExcel.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet;
                Microsoft.Office.Interop.Excel.Range rg = null;
 
                Int32 row = 1;
                dataGridView1.Rows.Clear();
                List<String> arr = new List<string>();
                while (ObjWorkSheet.get_Range("a" + row, "a" + row).Value != null)
                {
                    rg = ObjWorkSheet.get_Range("a" + row, "u" + row);
                    foreach (Microsoft.Office.Interop.Excel.Range item in rg)
                    {
                        try
                        {
                            arr.Add(item.Value.ToString().Trim());
                        }
                        catch { arr.Add(""); }
                    }
                    dataGridView1.Rows.Add(arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8]);
                    arr.Clear();
                    row++;
                }
                MessageBox.Show("Файл успешно считан!", "Считывание файла", MessageBoxButtons.OK, MessageBoxIcon.Information);              
            }
            catch (Exception ex) { MessageBox.Show("Ошибка: " + ex.Message, "Ошибка при считывании excel файла", MessageBoxButtons.OK, MessageBoxIcon.Error); }
            {
 
                ObjWorkBook.Close(false, "", null);
                ObjExcel.Quit();
                ObjWorkBook = null;
                ObjWorkSheet = null;
                ObjExcel = null;
            }
        }
    }
}
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
06.05.2015, 14:52
anvaro92, ну и где происходит сбой?
0
0 / 0 / 1
Регистрация: 21.05.2014
Сообщений: 67
06.05.2015, 15:28  [ТС]
nio, мертвая тишина действия нету. щелкаю кнопку открыть(button1) ничего не происходит
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
06.05.2015, 15:41
Попробуйте заменить Вашу шапку на эту
C#
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
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Data.OleDb;
using Excel = Microsoft.Office.Interop.Excel;
 
 
 
namespace restruct
{
    public partial class Form1 : Form
    {
        private Microsoft.Office.Interop.Excel.Application ObjExcel;
        private Microsoft.Office.Interop.Excel.Workbook ObjWorkBook;
        private Microsoft.Office.Interop.Excel.Worksheet ObjWorkSheet;
        private string fileName;
 
        public Form1()
        {
            InitializeComponent();
        }
и ещё вы добавили в обозревателе решений в reference ссылку на сборку Microsoft.Office.Interop.Excel ???
0
0 / 0 / 1
Регистрация: 21.05.2014
Сообщений: 67
06.05.2015, 15:50  [ТС]
AndreyVorobey, обозревателе решений в reference ссылку на сборку Microsoft.Office.Interop.Excel по точнее пожалуйста.
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
06.05.2015, 16:19
В Visual Studio имеется технология COM - компонентная модель объектов. Она позволяет одной программе (VS) работать с объектом другой программы (excel).
В нашем случае при использовании .NET сборок взаимодействия с приложением Microsoft Office нужно добавить ссылку на объект Microsoft.Offise.Interop.Excel, и ввести алиас пространства имён using Excel = Microsoft.Office.Interop.Excel;
в VS2012 Добавить ссылку можно в explorer solution-references-add reference- вкладка COM, в VS8-10 в вкладке .NET вроде
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
07.05.2015, 14:02
Цитата Сообщение от anvaro92 Посмотреть сообщение
щелкаю кнопку открыть(button1) ничего не происходит
пошаговая отладка в помощь
Конечный автомат, реализующий работу лифта
0
0 / 0 / 1
Регистрация: 21.05.2014
Сообщений: 67
08.05.2015, 07:54  [ТС]
AndreyVorobey, у меня VS 2008 но все равно reference добавил ссылку на Microsoft.Office.Interop.Excel; и все равно не работает. вот что получилось. ошибка вот здесь показывает (openDialog.FileName);

C#
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
61
62
63
64
65
66
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
using Word = Microsoft.Office.Interop.Word;
 
namespace ConsoleApplication1
{
    public partial class Form1 : Form
    {
        private Microsoft.Office.Interop.Excel.Application ObjExcel;
        private Microsoft.Office.Interop.Excel.Workbook ObjWorkBook;
        private Microsoft.Office.Interop.Excel.Worksheet ObjWorkSheet;
        private string fileName;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                ObjExcel = new Microsoft.Office.Interop.Excel.Application();
                ObjWorkBook = ObjExcel.Workbooks.Open(openDialog.FileName);
                ObjWorkSheet = ObjExcel.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet;
                Microsoft.Office.Interop.Excel.Range rg = null;
 
                Int32 row = 1;
                dataGridView1.Rows.Clear();
                List<String> arr = new List<string>();
                while (ObjWorkSheet.get_Range("a" + row, "a" + row).Value != null)
                {
                    rg = ObjWorkSheet.get_Range("a" + row, "u" + row);
                    foreach (Microsoft.Office.Interop.Excel.Range item in rg)
                    {
                        try
                        {
                            arr.Add(item.Value.ToString().Trim());
                        }
                        catch { arr.Add(""); }
                    }
                    dataGridView1.Rows.Add(arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8]);
                    arr.Clear();
                    row++;
                }
                MessageBox.Show("Файл успешно считан!", "Считывание файла", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex) { MessageBox.Show("Ошибка: " + ex.Message, "Ошибка при считывании excel файла", MessageBoxButtons.OK, MessageBoxIcon.Error); }
            {
 
                ObjWorkBook.Close(false, "", null);
                ObjExcel.Quit();
                ObjWorkBook = null;
                ObjWorkSheet = null;
                ObjExcel = null;
            }
        }
    }
}
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
08.05.2015, 09:10
Извините, но не совсем понимаю, в чем именно ошибка. С ходу могу сказать, что если это конечный код, то здесь отсутствует кусок открытия файла в начале метода
C#
1
2
3
4
5
 private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openDialog = new OpenFileDialog();
            openDialog.Filter = "Файл Excel|*.XLSX;*.XLS";
            openDialog.ShowDialog();
0
0 / 0 / 1
Регистрация: 21.05.2014
Сообщений: 67
08.05.2015, 12:46  [ТС]
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
и ещё вы добавили в обозревателе решений в reference ссылку на сборку Microsoft.Office.Interop.Excel
сделал но все еще не работает.
программа выглядеть так


C#
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
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Data.OleDb;
using Excel = Microsoft.Office.Interop.Excel;
using System;
 
 
namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        private Microsoft.Office.Interop.Excel.Application ObjExcel;
        private Microsoft.Office.Interop.Excel.Workbook ObjWorkBook;
        private Microsoft.Office.Interop.Excel.Worksheet ObjWorkSheet;
        private string fileName;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Stream myStream = null;
            OpenFileDialog openFileDialog1 = new OpenFileDialog();
 
            openFileDialog1.InitialDirectory = "c:\\";
            openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
            openFileDialog1.FilterIndex = 2;
            openFileDialog1.RestoreDirectory = true;
 
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    if ((myStream = openFileDialog1.OpenFile()) != null)
                    {
                        using (myStream)
                        {
                            // Insert code to read the stream here.
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
                }
            }
        }
    }
}
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
08.05.2015, 15:50
я могу кинуть проект с рабочей кнопкой импорта excel в datagrid, но у меня VS12.
0
0 / 0 / 1
Регистрация: 21.05.2014
Сообщений: 67
08.05.2015, 16:03  [ТС]
AndreyVorobey, нашел способ
Заполнение DataGridView из файла Excel
но не полностью работает.
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
08.05.2015, 16:09
Вот. + файлик для импорта. 20 столбцов на раз выводит
Вложения
Тип файла: rar test.rar (64.2 Кб, 98 просмотров)
0
0 / 0 / 1
Регистрация: 21.05.2014
Сообщений: 67
08.05.2015, 16:24  [ТС]
ошибку выводит здесь Application.Run(new Form1());

Добавлено через 5 минут
Цитата Сообщение от anvaro92 Посмотреть сообщение
AndreyVorobey, нашел способ
Заполнение DataGridView из файла Excel
но не полностью работает.
AndreyVorobey, посмотри здесь может быть что то получится. Заполнение DataGridView из файла Excel
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.05.2015, 16:24
Помогаю со студенческими работами здесь

Открыть txt файл в DataGridView
Привет всем! народ не могу понять ! есть кнопка на которой прописан код сохранения в из datagridview в txt все прекрасно работает! вот...

Открыть файл по названию из datagridview
Есть datagridview, куда записываются имена файлов в строковом виде( files\123.jpg ). Все файлы лежат в одной папке. Как открыть...

Открыть текстовый файл из treeview в datagridview
Доброго времени суток! Может кто знает и может подсказать. Есть treeview, в котором можно просмотреть любой диск на компьютере, мы...

Открыть csv файл из treeview в datagridview
Народ плиз небольшая нужна помощь умных людей!) Как открыть csv файл ну или txt из treeview в datagridview при нажатии на файл. в...

Как открыть файл xls в DataGridView?
Здравствуйте!Как открыть файл excel в datagridview?Если таким образом я его сохранил: Excel.Application excelapp = new...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru