Как я могу использовать OLEDB для заполнения списка из файла .XLS - PullRequest
0 голосов
/ 15 июня 2011

Привет, у меня небольшая проблема. Я пишу программу, которая отображает столбцы файла Excel и рядом с ним столбцы базы данных Access в двух отдельных списках. Вы выбираете лист и таблицу для отображения с помощью поля со списком. Столбцы Access отображаются нормально, но столбцы листа Excel не будут отображаться независимо от того, что я делаю, но листы появляются в комбинированном окне без проблем, но столбцы не отображаются независимо от того, что я делаю. Есть ли какой-то конкретный способ, которым я могу сделать это, который работает, потому что я не мог найти что-либо в Интернете.

Это та часть, которая должна его вставить {

             {

            // lvwDestination.Columns.Add(_dt.Columns[i].ColumnName);

            lvwSource.Columns.Add("Fields in Database", -2, HorizontalAlignment.Left);

            for (int i = 0; i < _Sourcedt.Rows.Count; i++)
            {

                ListViewItem lvwItem = new ListViewItem("" + _Sourcedt.Columns[i].ColumnName, 0);
                lvwSource.Items.AddRange(new ListViewItem[] { lvwItem });

            }


        }

    }

Еще одна часть, которую я, возможно, испортил, работала для доступа, но не для Excel. Я также немного изменил оператор Select

private void cboSourceName_SelectedIndexChanged (отправитель объекта, EventArgs e) { // создаем адаптер и заполняем DataSet

        OleDbDataAdapter adapter =
           new OleDbDataAdapter("Select * from " + cboSourceName.Text +"" + "", _SourceConn);
        lvwSource.Columns.Clear();

        lvwSource.Items.Clear();

        _Sourcedt.Columns.Clear();//Contains all the columns in selected table

        try
        {
            adapter.Fill(_Sourcedt);
        }
        catch
        {
        }
        LoadColumns2();

    }

А также соединительная часть

private void btnConnectSource_Click (отправитель объекта, EventArgs e) { пытаться {

            string connString =



            "Provider=Microsoft.Jet.OLEDB.4.0;" +
            "Data Source=" + txtSourcePath.Text + ";" +
            "Extended Properties=Excel 8.0";
            //"Password=" + txtPWSource + ";";

            _SourceConn = new OleDbConnection(connString);
           // _OleConn[1].ConnectionString = connString;
            _SourceConn.Open();

            _Sourcedt = new DataTable();

            LoadCombo2();
        }

        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }

1 Ответ

0 голосов
/ 23 июня 2011

Listview не очень хорошая идея для использования в этом случае. Лучший способ сделать это - заполнить ваши данные из Excel в Datagrid

...