datagridview导入excel

tmd456 2008-12-03 09:06:33
Excel . Workbook wBook = myexcel.Workbooks.Open(System.Windows.Forms.Application.StartupPath + @"\book1.xls",
missing, missing, missing, missing, missing, missing, missing,
missing, missing, missing, missing, missing, missing, missing);

错误 当前上下文中不存在名称“missing” D:\ccxt\ccxt\ccxt\czhyjssl.cs 945 16 ccxt
这是乍回事?
...全文
256 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tmd456 2008-12-03
  • 打赏
  • 举报
回复
谢谢各位解决
Old_Mouse 2008-12-03
  • 打赏
  • 举报
回复

System.Reflection.Missing.Value
jasen520 2008-12-03
  • 打赏
  • 举报
回复
你上面提到的那种方法是在网上找的吧,我原来就研究过,没有解决到,最后还是用我上面的方法才搞定的。
你只要把里面的datagrid改成datagridview,再把对应的属性修改一下就行啦
tmd456 2008-12-03
  • 打赏
  • 举报
回复
错误 1 “System.Reflection.Missing”是“类型”,但此处被当做“变量”来使用 D:\ccxt\ccxt\ccxt\czhyjssl.cs 945 17 ccxt
tmd456 2008-12-03
  • 打赏
  • 举报
回复
添加using System.Reflection;也一样
wuyq11 2008-12-03
  • 打赏
  • 举报
回复
添加using System.Reflection;
jasen520 2008-12-03
  • 打赏
  • 举报
回复
下面这个是导入到datagrid中方法,和datagridview应该是差不多的
//连接Excel
System.Data.OleDb.OleDbConnection cn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + textBox1.Text + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1';");
System.Data.OleDb.OleDbDataAdapter dap = new System.Data.OleDb.OleDbDataAdapter("", cn);
DataTable schematable = new DataTable();
if (cn.State == ConnectionState.Closed) cn.Open();
schematable = cn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
string tablename = schematable.Rows[0][2].ToString().Trim();
//把Excel复制到table表中
table.Clear();
dap.SelectCommand.CommandText = "select '' as 确定路段,* from [" + tablename + "]";
dap.Fill(table);
//判断Excel的完整情况
for (int j = 0; j <= table.Rows.Count - 1; j++)
{
if (table.Rows[j]["姓名"].ToString() == "" || table.Rows[j]["民族"].ToString() == "" || table.Rows[j]["入学总分"].ToString() == "" || table.Rows[j]["入学性质"].ToString() == "" || table.Rows[j]["路段"].ToString() == "")
{
Msg.ShowInformation("请先完善Excel表后再导入!.");
textBox1.Text = "";
table.Clear();
DataGrid1.DataSource = null;
label3.Text = "0";
return;
}
}
this.DataGrid1.DataSource = table.DefaultView;
label3.Text = table.Rows.Count.ToString();
//不允许新增行
table.DefaultView.AllowNew = false;
DataGrid1.ReadOnly = true;
//把table的列赋值到数组中
Int16 i = default(Int16);
string[] array = new string[table.Columns.Count - 1];
if (table.Columns.Count > 0)
{
for (i = 0; i <= table.Columns.Count - 2; i++)
{
array[i] = table.Columns[i+1].ColumnName;
}
}

//清除DataGrid1的样式
while (DataGrid1.TableStyles.Count > 0)
{
DataGrid1.TableStyles.RemoveAt(0);
}
//定义DataGrid1的样式
DataGridTableStyle tablestyle = new DataGridTableStyle();
tablestyle.RowHeaderWidth = 10;
tablestyle.AlternatingBackColor = Color.WhiteSmoke;
tablestyle.MappingName = GR.Common.Utils.GetMappingName(DataGrid1.DataSource);
DataGridTextBoxColumn textboxcolumn = default(DataGridTextBoxColumn);

textboxcolumn = new DataGridTextBoxColumn();
textboxcolumn.MappingName = "确定路段";
textboxcolumn.HeaderText = "确定路段";
textboxcolumn.NullText = "";
textboxcolumn.Width = 90;
textboxcolumn.ReadOnly = false;
ComboBox cmbFunctionArea = new ComboBox();
Section Section = new Section();
cmbFunctionArea.DataSource=Section.GetSection();
cmbFunctionArea.DisplayMember="Name";
cmbFunctionArea.SelectionChangeCommitted += ComboBox_SelectedIndexChanged;
cmbFunctionArea.Cursor = Cursors.Arrow;
cmbFunctionArea.DropDownStyle = ComboBoxStyle.DropDownList;
cmbFunctionArea.Dock = DockStyle.Fill;
textboxcolumn.TextBox.Controls.Add(cmbFunctionArea);
tablestyle.GridColumnStyles.Add(textboxcolumn);

for (i = 0; i <= array.Length - 1; i++)
{
textboxcolumn = new DataGridTextBoxColumn();
textboxcolumn.MappingName = array[i];
textboxcolumn.HeaderText = array[i];
textboxcolumn.NullText = "";
textboxcolumn.Width = 80;
textboxcolumn.ReadOnly = true;
tablestyle.GridColumnStyles.Add(textboxcolumn);
}
DataGrid1.TableStyles.Add(tablestyle);

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧