Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
-4 / 2 / 0
Регистрация: 10.02.2022
Сообщений: 290

Парсинг Excel файла

28.09.2023, 09:35. Показов 730. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
доброе

есть код который считывает строки с 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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
b_create_bat_file.Enabled = false;
            OpenFileDialog ofd = new OpenFileDialog();
            //Задаем расширение имени файла по умолчанию.
            ofd.DefaultExt = "*.xls;*.xlsx";
            ofd.Filter = "*.xlsx|*.xlsx|*.xls|*.xls";
            //Задаем заголовок диалогового окна.
            ofd.Title = "Выберите документ для загрузки данных";
            t_file.Text = ofd.FileName;
 
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                // dt.Reset();
                // dt.Clear();
                //dt.Dispose();
 
                ExcelObj.Application app = new ExcelObj.Application();
                ExcelObj.Workbook workbook;
                ExcelObj.Worksheet NwSheet;
                ExcelObj.Range ShtRange;
                DataTable dt = new DataTable();
 
                workbook = app.Workbooks.Open(ofd.FileName, Missing.Value,
                Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                Missing.Value);
 
                NwSheet = (ExcelObj.Worksheet)workbook.Sheets.get_Item(1);
                ShtRange = NwSheet.UsedRange;
 
                int count_columns = ShtRange.Columns.Count;
 
                if (count_columns > 1) // проверка Excel файла на присуствие строк
                {
 
                    for (int Cnum = 1; Cnum <= ShtRange.Columns.Count; Cnum++)
                    {
                        if (c_list_tc_bases.SelectedItem.ToString() == (ShtRange.Cells[1, Cnum] as ExcelObj.Range).Value2.ToString())
                        {
                            dt.Columns.Add(new DataColumn((ShtRange.Cells[1, Cnum] as ExcelObj.Range).Value2.ToString()));
                       }
 
                      
                    }
 
                    for (int Rnum = 2; Rnum <= ShtRange.Rows.Count; Rnum++)
                    {
                        DataRow dr = dt.NewRow();
                        for (int Cnum = 1; Cnum <= ShtRange.Columns.Count; Cnum++)
                        {
                            if ((ShtRange.Cells[Rnum, Cnum] as ExcelObj.Range).Value2 != null)
                            {
                                dr[Cnum - 1] =
                                (ShtRange.Cells[Rnum, Cnum] as ExcelObj.Range).Value2.ToString();
                            }
                        }
 
                 
                         
                        dt.Rows.Add(dr);
                        dt.AcceptChanges();
                    }
 
                    d_data_excel.DataSource = dt;
                    app.Quit();
                }
          
            
            }
        }/// test

а вот кусочек код, который выполняет условие т.е. сравнивает значение выбранной строки в комбоксе с ячейкой в excel файле
C#
1
2
3
4
if (c_list_tc_bases.SelectedItem.ToString() == (ShtRange.Cells[1, Cnum] as ExcelObj.Range).Value2.ToString())
                        {
                            dt.Columns.Add(new DataColumn((ShtRange.Cells[1, Cnum] as ExcelObj.Range).Value2.ToString()));
                       }
Исходный excel файл имеет например такой вид

яблоко апельсин ягода
зеленое сладкий малина
красное кислый клубника

так вот
яблоко апельсин ягода - это столбцы, с которыми сравнивается значение в комбоксе

как сделать так чтобы если в комбоксе выбран яблоко то в датагрид добавить только столбец яблоко и значение зеленое красное, остальные столбцы игнорировать

если выбрано ягода то в датагрид добавить только столбец ягода и значение малина клубника, остальные столбцы игнорировать и так же с апельсином сладкий кислый

Как так сделать?????
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.09.2023, 09:35
Ответы с готовыми решениями:

Парсинг Excel файла
Добрый день! Занялся парсингом ексель файла. В самом файле екселя есть ячейки у который фотрам установлен &quot;Часовой&quot;. А при...

Парсинг Excel файла
Доброго времени суток, вопрос такой - у меня есть файл с расписанием занятий, как мне вытащить из него данные по дням о занятиях конкретной...

Парсинг текстового файла и запись данных в Excel
есть текстовый док с такими строками : HS oper-209 UN Linux HS oper-203 UN Linux нужно записать все что после букв UN...

3
338 / 327 / 154
Регистрация: 29.10.2012
Сообщений: 949
28.09.2023, 10:35
А в чем собственно состоит проблема?
0
-4 / 2 / 0
Регистрация: 10.02.2022
Сообщений: 290
29.09.2023, 01:53  [ТС]
Цитата Сообщение от kmaffa Посмотреть сообщение
А в чем собственно состоит проблема?
Я вроде бы написал
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,748
Записей в блоге: 1
29.09.2023, 11:15
Кликните здесь для просмотра всего текста
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
b_create_bat_file.Enabled = false;
            OpenFileDialog ofd = new OpenFileDialog();
            //Задаем расширение имени файла по умолчанию.
            ofd.DefaultExt = "*.xls;*.xlsx";
            ofd.Filter = "*.xlsx|*.xlsx|*.xls|*.xls";
            //Задаем заголовок диалогового окна.
            ofd.Title = "Выберите документ для загрузки данных";
            t_file.Text = ofd.FileName;
 
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                ExcelObj.Application app = new ExcelObj.Application();
                ExcelObj.Workbook workbook;
                ExcelObj.Worksheet NwSheet;
                ExcelObj.Range ShtRange;
                DataTable dt = new DataTable();
 
                workbook = app.Workbooks.Open(ofd.FileName, Missing.Value,
                Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                Missing.Value);
 
                NwSheet = (ExcelObj.Worksheet)workbook.Sheets.get_Item(1);
                ShtRange = NwSheet.UsedRange;
 
                int count_columns = ShtRange.Columns.Count;
                int excelTargetColumnIndex = 0;
 
                if (count_columns > 1) // проверка Excel файла на присутствие строк
                {
                    for (int Cnum = 1; Cnum <= count_columns; Cnum++)
                    {
                        if (c_list_tc_bases.SelectedItem.ToString() == (ShtRange.Cells[1, Cnum] as ExcelObj.Range).Value2.ToString())
                        {
                            excelTargetColumnIndex = Cnum;
                            dt.Columns.Add(new DataColumn((ShtRange.Cells[1, excelTargetColumnIndex] as ExcelObj.Range).Value2.ToString(), typeof(string)));
                            break; //чтобы лишнее не молотить
                        }
                    }
                   if (excelTargetColumnIndex  > 0)
                   {
                      for (int Rnum = 2; Rnum <= ShtRange.Rows.Count; Rnum++)
                      {
                          DataRow dr = dt.NewRow();
                          dr[0] = (ShtRange.Cells[Rnum, excelTargetColumnIndex] as ExcelObj.Range).Value2?.ToString();
                      }
                    }
                          
                    dt.Rows.Add(dr);
                    dt.AcceptChanges();
                  }
 
                    d_data_excel.DataSource = dt;
                    app.Quit();
                }
            }
        }/// test
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.09.2023, 11:15
Помогаю со студенческими работами здесь

Парсинг данных из файла Word и сохранение результата в Excel
Уважаемые форумчане! Вот посоветовали задать вопрос в этой теме. Суть решаемой мной задачи: есть файл Word, который содержит данные...

Парсинг строк из огромного текстового файла из конца в начало средствами VBA Excel быстро
Хочу поделиться опытом. Была поставлена задача с помощью VBA Excel читать строки из огромного (более 200Мб) текстового файла, причем из...

Парсинг excel
Доброго времени суток! Подскажите, пожалуйста, как cпарсить данные c excel документа с помощью ActiveX и сохранить в таблицу Oracle

Парсинг Excel
Добрый день, прошу помощи с проблемой, которая возникла в результате парсинга эксель документа. Он содержит в себе 5 столбцов и строки (4...

Парсинг EXCEL
Добрый день! Объясните пожалуйста Почему при парсинге эксель файла /* * To change this license header, choose License Headers...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
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. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru