【问题标题】:How can I use OLEDB to populate listview from a .XLS file如何使用 OLEDB 从 .XLS 文件填充列表视图
【发布时间】:2011-06-15 11:54:11
【问题描述】:

您好,我有一个小问题。我正在编写一个程序,该程序显示 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(object sender, EventArgs e) { // 创建适配器并填充数据集

        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(object sender, 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);
        }

【问题讨论】:

  • 好吧,我对编码很陌生,所以你需要哪一部分
  • 我也在寻找在您的 excel 文件中读取的代码。如果您的 ListView 为空,可能是因为 _Sourcedt.Rows.Count = 0,您需要弄清楚为什么没有得到任何行,例如您正在阅读 excel 中的空白表格。使用Add 方法而不是AddRange,Add 用于添加单个项目 AddRange 用于添加多个项目。
  • 我检查了工作表不是空的
  • lvwSource.Items.Add(new ListViewItem(_Sourcedt.Columns[i].ColumnName, 0)); 应该可以工作。请注意,我已经从构造函数的开头删除了空字符串。这是 JavaScript 和其他弱类型语言中用于将结果强制为字符串的旧技巧。 c# 是强类型的,所以不需要。
  • hmmm 不工作肯定是读取部分

标签: c# oledb


【解决方案1】:

在这种情况下使用 Listview 不是一个好主意。最好的方法是将 Excel 中的数据填充到 Datagrid 中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多