Пример #1
0
        /// <summary>
        /// Импорт из екселя в datagridview
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Import_Click(object sender, EventArgs e)
        {
            // очистка перед вызовом
            dgvExcel.DataSource = null;
            dgvExcel.Columns.Clear();
            dgvExcel.Rows.Clear();

            OpenFileDialog opf = new OpenFileDialog
            {
                Filter           = "Excel Files|*.xls;*.xlsx;*.xlsm",
                InitialDirectory = (s)
            };

            opf.ShowDialog();
            string filename = opf.FileName;

            if (filename != "")
            {
                #region Загрузка из Екселя в новый грид
                try
                {
                    FileStream             stream = File.Open(filename, FileMode.Open, FileAccess.Read);
                    Excel.IExcelDataReader IEDR;
                    int fileformat = opf.SafeFileName.IndexOf(".xlsx");
                    if (fileformat > -1)
                    {
                        IEDR = Excel.ExcelReaderFactory.CreateOpenXmlReader(stream);
                    }
                    else
                    {
                        IEDR = Excel.ExcelReaderFactory.CreateBinaryReader(stream);
                    }
                    IEDR.IsFirstRowAsColumnNames = true;
                    DataSet ds = IEDR.AsDataSet();
                    System.Data.DataTable dt = ds.Tables[0];
                    dgvExcel.DataSource = dt;
                    IEDR.Close();
                    dgvExcel.Columns[1].DefaultCellStyle.Format = "0.000###";
                }
                catch (Exception load)
                {
                    MessageBox.Show(load.ToString(), "Уведомление", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                #endregion
            }
            else
            {
                MessageBox.Show("Не выбран файл для загрузки.", "Уведомление", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            opf.RestoreDirectory = true;
        }
Пример #2
0
        public void LoadExclelFile()
        {
            /***
             * метод загружает файл Excel в datagridview
             * здесь же вызывается форма выбора листа
             * и установление флажка "в первой строке - имена стролбцов"
             ***/



            OpenFileDialog ofd = new OpenFileDialog();

            //ofd.DefaultExt = "*.xls;*.xlsx";
            ofd.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm";
            ofd.Title  = "Выберите документ для загрузки данных";

            if (ofd.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    System.IO.FileStream stream =
                        System.IO.File.Open(ofd.FileName,
                                            System.IO.FileMode.Open,
                                            System.IO.FileAccess.Read);
                    Excel.IExcelDataReader IEDR;
                    int fileformat = ofd.SafeFileName.IndexOf(".xlsx");
                    if (fileformat > -1)
                    {
                        //2007 format *.xlsx
                        IEDR = Excel.ExcelReaderFactory.CreateOpenXmlReader(stream);
                    }
                    else
                    {
                        //97-2003 format *.xls
                        IEDR = Excel.ExcelReaderFactory.CreateBinaryReader(stream);
                    }

                    DataSet ds           = IEDR.AsDataSet();
                    int     tables_count = ds.Tables.Count; //количество таблиц в файле
                    string  tables_names = "";              // имена таблиц
                    for (int i = 0; i < tables_count; i++)
                    {
                        tables_names += ds.Tables[i].TableName + ","; // собираем имена
                    }

                    ExcelFileSettings.Add("tables_count", tables_count.ToString()); // заполняем данные
                    ExcelFileSettings.Add("tables_names", tables_names);
                    ExcelFileSettings.Add("file_name", ofd.SafeFileName);


                    new LoadExcelFileSettings(this).ShowDialog(); // открываем новое окно настроек загрузки файла

                    //Если данное значение установлено в true
                    //то первая строка используется в качестве
                    //заголовков для колонок

                    if (ExcelFileSettings["checked_heads"] == "1")
                    {
                        IEDR.IsFirstRowAsColumnNames = true;
                    }
                    else
                    {
                        IEDR.IsFirstRowAsColumnNames = false;
                    }

                    int checked_table = 0;                                               // номер выбранного листа
                    checked_table = Convert.ToInt32(ExcelFileSettings["checked_table"]); // получаем этот номер

                    DataSet ds1 = IEDR.AsDataSet();

                    //Устанавливаем в качестве источника данных dataset
                    //с указанием номера таблицы. Номер таблицы указавает
                    //на соответствующий лист в файле нумерация листов
                    //начинается с нуля.
                    try
                    {
                        dataGridView1.Columns.Clear();
                        dataGridView1.DataSource = ds1.Tables[checked_table]; // рисуем выбранный лист
                        CleanNullRowsColumns();                               //
                        // richTextBox1.Text += "Открыт файл: " + ofd.SafeFileName + "\n";

                        label1.Text = "Путь к файлу: " + ofd.FileName;
                    }
                    catch
                    {
                    }

                    IEDR.Close();
                    ExcelFileSettings.Clear();
                    UpdateForm();
                }

                catch
                {
                    MessageBox.Show("Произошла ошибка при загрузке файла. Проверьте, не открыт ли у Вас загружаемый документ.");//обработка всех исключений (например, если файл открыт а Экселе)
                }
            }

            else
            {
                MessageBox.Show("Вы не выбрали файл для открытия",
                                "Загрузка данных...", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Пример #3
0
        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.DefaultExt = "*.xls;*.xlsx";
            ofd.Filter     = "Excel 2003(*.xls)|*.xls|Excel 2007(*.xlsx)|*.xlsx";
            ofd.Title      = "Выберите документ для загрузки данных";

            if (ofd.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = ofd.FileName;

                FileStream stream = File.Open(ofd.FileName, FileMode.Open, FileAccess.Read);

                Excel.IExcelDataReader IEDR;

                int fileformat = ofd.SafeFileName.IndexOf(".xlsx");

                if (fileformat > -1)
                {
                    //2007 format *.xlsx
                    IEDR = Excel.ExcelReaderFactory.CreateOpenXmlReader(stream);
                }
                else
                {
                    //97-2003 format *.xls
                    IEDR = Excel.ExcelReaderFactory.CreateBinaryReader(stream);
                }

                //Если данное значение установлено в true
                //то первая строка используется в качестве
                //заголовков для колонок
                IEDR.IsFirstRowAsColumnNames = true;

                ds = IEDR.AsDataSet();

                // выводим названия всех таблиц
                //foreach(DataTable dt in ds.Tables)
                //{
                //    MessageBox.Show(dt.TableName);
                //}


                //Устанавливаем в качестве источника данных dataset
                //с указанием номера таблицы. Номер таблицы указавает
                //на соответствующий лист в файле нумерация листов
                //начинается с нуля.
                dataGridView1.DataSource = ds.Tables[0];
                IEDR.Close();

                // выбираем из DataSet только столбец Автор
                IEnumerable <string> query = from book in ds.Tables[0].AsEnumerable()
                                             select book.Field <string>("Автор");

                // При помощи метода Distinct() удаляем повторяющиеся значения из запроса
                IEnumerable <string> distinctNames = query.Distinct();

                // Занесли значения в combobox1
                comboBox1.Items.AddRange(distinctNames.ToArray());

                // выбираем из DataSet только столбец Год издания
                IEnumerable <double> query1 = from book in ds.Tables[0].AsEnumerable()
                                              select book.Field <double>("Год издания");

                // При помощи метода Distinct() удаляем повторяющиеся значения из запроса
                IEnumerable <double> distinctY = query1.Distinct();

                // Занесли значения в combobox3
                //comboBox3.Items.AddRange(distinctY.ToArray());

                foreach (double year in distinctY)
                {
                    comboBox3.Items.Add(year);
                }

                //foreach (string name in distinctNames)
                //{
                //    MessageBox.Show(name);
                //}
            }
            else
            {
                MessageBox.Show("Вы не выбрали файл для открытия",
                                "Загрузка данных...", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }