System.ArgumentException: 列“Class”不属于表 [StudentSheet.xls$]。

h502091123 2014-04-11 09:05:19
在做通过按钮将excel导入到数据库时,出现 System.ArgumentException: 列“Class”不属于表 [StudentSheet.xls$]。 在 System.Data.DataRow.GetDataColumn(String columnName) 在 System.Data.DataRow.get_Item(String columnName) 在 Book.Web.Mudules.HealthTeacher.StudentList.btnLoadUp_Click(Object sender, EventArgs e)位置 E:\Web\Web\Mudules\HealthTeacher\StudentList.aspx.cs:行号 263 问题 ,麻烦大家帮忙看看 非常急的


代码:
string filepath = FileUpload1.FileName;
string savePath = Server.MapPath("~/ExcelTemp/" + filepath);//Server.MapPath 获得虚拟服务器相对路径
if (savePath.Substring(savePath.LastIndexOf(".") + 1) != "xls")
{
Response.Write("请选择正确的文件");
return;
}
SqlConnection co = new SqlConnection();
co.ConnectionString = "server=WIN-CLU0FATHSEK;database=12110125117;Integrated Security=SSPI;";
try
{

co.Open();
string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + savePath + ";Extended Properties='Excel 8.0'";

OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", conn);
myCommand.SelectCommand.Prepare();

DataSet ds = new DataSet();
myCommand.Fill(ds, "[" + filepath + "$]");
conn.Dispose();

myCommand.Dispose();
int c = ds.Tables[0].Rows.Count;
if (c == 0)
{
Response.Write("没有满足条件的记录");
return;
}
for (int i = 0; i < c; i++)
{
SqlCommand cmm = new SqlCommand(" INSERT INTO StudentSheet ([Class],[Code],[Name],[Sex],[Birth],[Political],[Campus],[Education],[Address],[TelNo])" + " VALUES ( " +
"" + ds.Tables[0].Rows[i]["Class"].ToString() + ", " +
"" + ds.Tables[0].Rows[i]["Code"].ToString() + ", " +
"" + ds.Tables[0].Rows[i]["Name"].ToString() + ", " +
"" + ds.Tables[0].Rows[i]["Sex"].ToString() + ", " +
"" + ds.Tables[0].Rows[i]["Birth"].ToString() + ", " +
"" + ds.Tables[0].Rows[i]["Political"].ToString() + ", " +
"" + ds.Tables[0].Rows[i]["Campus"].ToString() + ", " +
"" + ds.Tables[0].Rows[i]["Education"].ToString() + ", " +
"" + ds.Tables[0].Rows[i]["Address"].ToString() + ", " +
"" + ds.Tables[0].Rows[i]["TelNo"].ToString() + "," + " )"
, co
);
cmm.ExecuteNonQuery();
cmm = new SqlCommand(
"select @@identity from StudentSheet"
, co
);
object newid = cmm.ExecuteScalar();

cmm.Dispose();
}
Response.Write("成功导入!");

return;
}
catch (Exception ex)
{

Response.Write(ex.ToString());

return;
}
finally
{

if (co.State == System.Data.ConnectionState.Open)

co.Close();
}
}
...全文
370 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
na2430979022na 2014-10-22
  • 打赏
  • 举报
回复
你的代码SQL语句出错了,每个value要用单引号‘扩住
h502091123 2014-04-12
  • 打赏
  • 举报
回复
System.Data.SqlClient.SqlException (0x80131904): '通信本' 附近有语法错误 还是这个问题
insus 2014-04-12
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
还是先打断点看DS是不是空的吧
h502091123 2014-04-11
  • 打赏
  • 举报
回复



现在被我改的 变成能 成功导入!
但是我的数据库里却没有excel表里的数据 这么为什么???
h502091123 2014-04-11
  • 打赏
  • 举报
回复
是我数据库里的表吗?
threenewbee 2014-04-11
  • 打赏
  • 举报
回复
贴出你的sql 包含“通信本”这个字符的 它有语法错误
h502091123 2014-04-11
  • 打赏
  • 举报
回复
放假帮忙看看吧 这个困扰我好久了 一直解决不来
h502091123 2014-04-11
  • 打赏
  • 举报
回复
excel表里的数据 Class Code 10通信本 10110003329 10通信本 10110003331 10通信本 10110003335 10通信本 10110003341
h502091123 2014-04-11
  • 打赏
  • 举报
回复
这个解决了 就是在插入数据时出现System.Data.SqlClient.SqlException (0x80131904): '通信本' 附近有语法错误
threenewbee 2014-04-11
  • 打赏
  • 举报
回复
别的类似。 列名不是第一行单元格的内容
threenewbee 2014-04-11
  • 打赏
  • 举报
回复
试试看 ds.Tables[0].Rows[i][0].ToString() 或者 ds.Tables[0].Rows[i]["A"].ToString()

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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