【发布时间】: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 不工作肯定是读取部分