Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > .NET
Перезагрузить страницу Как извлечь данные из Excel в datagridview по двум условиям?
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
hardfor hardfor вне форума
Новичок
 
Сообщений: 3
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.10.2016
По умолчанию Как извлечь данные из Excel в datagridview по двум условиям? - 12.10.2016, 21:35

ИМЕЕТСЯ
База данных в Ексель
База данных строки - 10 000 шт;
столбцы - 10 шт;

ВОПРОС
1. Каким способом оптимально извлечь из Ексель данные по двум условиям в три разные datagridview ?
2. Извлекаются следующие столбцы таблицы:
- ID
- наименование
- кол*
3. Таблица извлекается с заголовками столбцов (по возможности);

КОД
csharp Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OleDbConnection connection = new OleDbConnection(String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=NO\";", textBox1.Text));

            connection.Open();
            OleDbCommand command = new OleDbCommand("SELECT * FROM [Лист1$]", connection);
            OleDbDataReader reader = command.ExecuteReader();
            dataGridView1.Columns.Add("1", "1");
            dataGridView2.Columns.Add("1", "1");
            dataGridView3.Columns.Add("1", "1");
            while (reader.Read())
            {
                if (reader[0].ToString() == textBox2.Text)
                {
                    if (Convert.ToInt32(reader[1]) > 10 && Convert.ToInt32(reader[1]) < 14) dataGridView1.Rows.Add(reader[1].ToString());
                    if (Convert.ToInt32(reader[1]) > 20 && Convert.ToInt32(reader[1]) < 24) dataGridView2.Rows.Add(reader[1].ToString());
                    if (Convert.ToInt32(reader[1]) > 30 && Convert.ToInt32(reader[1]) < 34) dataGridView3.Rows.Add(reader[1].ToString());
                }
            }
            connection.Dispose();
        }

        private void textBox1_DoubleClick(object sender, EventArgs e)
        {
            openFileDialog1.Filter = "Excel 2003(*.xls)|*.xls|Excel 2007(*.xlsx)|*.xlsx";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = openFileDialog1.FileName;
            }
        }
    }
}


СЦЕНАРИЙ
1. Вносим ID задания.
2. Вносим путь к файлу.
3. Нажимаем кнопку "ИЗВЛЕЧЬ".
4. Данные извлекаются в зависимости от*"ID"*и*"порядковый номер"*в соответствующую datagridview.

ПРИЛОЖЕНИЕ
1. Проект.
2. Скрин
Миниатюры
2.jpg  
Вложения
Тип файла: zip kd2.zip (56.9 Кб, 8 просмотров)
Ответить с цитированием
  (#2 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,447
Сказал(а) спасибо: 22
Поблагодарили 944 раз(а) в 928 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 15.10.2016, 16:54

Вы вопрос написали или рабочий способ его решения?
Ответить с цитированием
Пользователь сказал cпасибо:
hardfor (16.10.2016)
  (#3 (permalink)) Старый
hardfor hardfor вне форума
Новичок
 
Сообщений: 3
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.10.2016
По умолчанию 16.10.2016, 23:02

Да. Я пытался задать вопрос.

Прошу прощения некорректно сформулировал.

Уточняю.

ВОПРОС
1. Каким способом оптимально извлечь из Ексель данные по двум условиям ?
Может есть какие-нибудь разные способы подключения и извлечения данных?
Данные требуется извлечь в три разные datagridview.

2. Как сделать, чтобы извлекались только следующие столбцы таблицы:
- ID;
- наименование;
- кол;

3. Как сделать, чтобы таблицы извлекались в datagridview с заголовками столбцов? (по возможности)
См. скрин в посте #1 под надписью "Пример. Как должно быть"
Ответить с цитированием
  (#4 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,447
Сказал(а) спасибо: 22
Поблагодарили 944 раз(а) в 928 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 17.10.2016, 09:17

1.
У Вас подключение как базы данных.
Также есть:
  • Interop - доступ через COM объект, ссылка на который добавляется в проект. Вносит зависимость от наличия Office, без него работать не будет. Предполагаю, что может быть несовместим между различными версиями Office.
  • CSV - текстовый формат. Можно любыми средствами (вручную или через Interop) сохранить в файл и потом разобрать его как простой текст.
  • XLSX - Office Open XML, кучка xml (и не только) документов в zip архиве. Таким же образом сохранить в файл, как и CSV. Разобрать можно, закодив всё вручную, либо с применением Microsoft OpenXML SDK для .Net.

Условия и количество значения не имеют, если операция не часто посторяющаяся над миллионами записей. Пишите так, чтобы можно было позже понять, что же это было.

Заполнять лучше отдельные DataTable, а не DataGridView. И только после их заполнения подключать их к DataGridView.

2.
Найти столбцы и запросить их.

3.
Не знаю как в OleDb, а в Interop это просто ячейки. Можно прочитать их как любой другой текст в таблице.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не обновляются данные в таблице при изменении значений в DataGridView tuchin SQL 0 24.05.2016 20:08
Из Excel в DataGridView vladgrey .NET 1 02.06.2012 22:56
Live CD, как с ним работать??? система повреждена и надо извлечь все данные с диска С rodolfus Windows XP 7 28.04.2011 14:31
Не получается извлечь данные из xml файла Timur2008 .NET 2 10.01.2011 08:16
Извлечь название строки или столбца для требуемого значения из массива в Excel AnnaO Вопросы начинающих программистов 7 13.12.2010 03:59
Как извлечь данные из args m9c1k Visual C++ 1 29.11.2010 00:25
Как в datagridview отобразить данные из datasourse на сервере Liza_cetera Visual C++ 1 29.11.2008 21:44
Как извлечь данные с жесткого диска с поврежденным гермоблоком? mobilus Техническая поддержка 1 24.08.2008 02:08
как извлечь данные из архива? Матрикс Софт и программы 6 05.03.2008 07:17
Как извлечь данные из запроса для программной обработки полей Airis Другие СУБД 0 13.04.2007 16:55
Help!!! Выделение ячеек в Excel согласно условиям (VBA) bigfire Visual Basic 4 08.04.2005 13:11
Как извлечь и проанализировать информацию из файлов Excel XP Anonymous Delphi 4 17.09.2002 12:06



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов