代码如下:
// 获取Excep文件的完整路径
string source = txtFileContents.Value;
string mystring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + source + ";Extended Properties=Excel 8.0";
OleDbConnection cnnxls = new OleDbConnection (mystring);
OleDbDataAdapter myDa =new OleDbDataAdapter("select * from [Sheet1$]",cnnxls);
DataSet myDs =new DataSet();
// 将 Excel 的[Sheet1]表内容填充到 DataSet 对象
myDa.Fill(myDs); if(myDs.Tables[0].Rows.Count > 0)
{
string strSql = "";
string CnnString="Provider=SQLOLEDB;database=test;server=(local);uid=sa;pwd=sa";
OleDbConnection conn =new OleDbConnection(CnnString);
conn.Open ();
OleDbCommand myCmd =null;
//循环取excel数据
for(int i=0; i<myDs.Tables[0].Rows.Count; i++)
{
strSql="insert into news(ID,dept,sum) values ('";
strSql += myDs.Tables[0].Rows[i].ItemArray[0].ToString() + "', '";
strSql += myDs.Tables[0].Rows[i].ItemArray[1].ToString() + "', '";
strSql += myDs.Tables[0].Rows[i].ItemArray[2].ToString() + "')";
try
{
myCmd=new OleDbCommand(strSql,conn);
myCmd.ExecuteNonQuery();
Label1.Text = "<script language=javascript>alert('数据导入成功.');</script>";
}
catch
{
Label1.Text = "<script language=javascript>alert('数据导入失败.');</script>";
}
}
conn.Close();
}
第一个问题!
请看我的excel的格式是这样的话:手机型号 所属区域 总量
----------------------------------
E360 安徽办事处 4626
E360 北京办事处 10184
V501 北京办事处 578
E380 北京办事处 1495
A768 北京办事处 4907
V171 北京办事处 3482
C359 北京办事处 1003
C650 北京办事处 7188
A388 北京办事处 102
V300 北京办事处 4011
E360 东莞办事处 2430
--------------------------------------
上传文件后,点击确定后:程序报错,如下:外部表不是预期的格式。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 外部表不是预期的格式。源错误:
行 82: DataSet myDs =new DataSet();
行 83: // 将 Excel 的[Sheet1]表内容填充到 DataSet 对象
行 84: myDa.Fill(myDs);
行 85:
行 86: if(myDs.Tables[0].Rows.Count > 0)
堆栈跟踪:
[OleDbException (0x80004005): 外部表不是预期的格式。]
System.Data.OleDb.OleDbConnection.ProcessResults(Int32 hr) +20
System.Data.OleDb.OleDbConnection.InitializeProvider() +57
System.Data.OleDb.OleDbConnection.Open() +203
System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection, ConnectionState& originalState) +44
System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +304
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +77
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) +38
DataGrid1.ExcelNOW.GetConnect() in c:\inetpub\wwwroot\datagrid1\excelnow.aspx.cs:84
DataGrid1.ExcelNOW.Button1_Click(Object sender, EventArgs e) in c:\inetpub\wwwroot\datagrid1\excelnow.aspx.cs:122
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1277第二个问题!
请看我的excel的格式改成这样的话:322 中文 22
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 中文
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 中文 中文
-----------------------------
插入成功了,但是在数据库中有中文的地方动没有显示!!
如下:
ID dept sum
--------------------------------
2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 ---------------------------------
如果全是数字就没有问题,以上问题请大家指点!!!谢了???
// 获取Excep文件的完整路径
string source = txtFileContents.Value;
string mystring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + source + ";Extended Properties=Excel 8.0";
OleDbConnection cnnxls = new OleDbConnection (mystring);
OleDbDataAdapter myDa =new OleDbDataAdapter("select * from [Sheet1$]",cnnxls);
DataSet myDs =new DataSet();
// 将 Excel 的[Sheet1]表内容填充到 DataSet 对象
myDa.Fill(myDs); if(myDs.Tables[0].Rows.Count > 0)
{
string strSql = "";
string CnnString="Provider=SQLOLEDB;database=test;server=(local);uid=sa;pwd=sa";
OleDbConnection conn =new OleDbConnection(CnnString);
conn.Open ();
OleDbCommand myCmd =null;
//循环取excel数据
for(int i=0; i<myDs.Tables[0].Rows.Count; i++)
{
strSql="insert into news(ID,dept,sum) values ('";
strSql += myDs.Tables[0].Rows[i].ItemArray[0].ToString() + "', '";
strSql += myDs.Tables[0].Rows[i].ItemArray[1].ToString() + "', '";
strSql += myDs.Tables[0].Rows[i].ItemArray[2].ToString() + "')";
try
{
myCmd=new OleDbCommand(strSql,conn);
myCmd.ExecuteNonQuery();
Label1.Text = "<script language=javascript>alert('数据导入成功.');</script>";
}
catch
{
Label1.Text = "<script language=javascript>alert('数据导入失败.');</script>";
}
}
conn.Close();
}
第一个问题!
请看我的excel的格式是这样的话:手机型号 所属区域 总量
----------------------------------
E360 安徽办事处 4626
E360 北京办事处 10184
V501 北京办事处 578
E380 北京办事处 1495
A768 北京办事处 4907
V171 北京办事处 3482
C359 北京办事处 1003
C650 北京办事处 7188
A388 北京办事处 102
V300 北京办事处 4011
E360 东莞办事处 2430
--------------------------------------
上传文件后,点击确定后:程序报错,如下:外部表不是预期的格式。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 外部表不是预期的格式。源错误:
行 82: DataSet myDs =new DataSet();
行 83: // 将 Excel 的[Sheet1]表内容填充到 DataSet 对象
行 84: myDa.Fill(myDs);
行 85:
行 86: if(myDs.Tables[0].Rows.Count > 0)
堆栈跟踪:
[OleDbException (0x80004005): 外部表不是预期的格式。]
System.Data.OleDb.OleDbConnection.ProcessResults(Int32 hr) +20
System.Data.OleDb.OleDbConnection.InitializeProvider() +57
System.Data.OleDb.OleDbConnection.Open() +203
System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection, ConnectionState& originalState) +44
System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +304
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +77
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) +38
DataGrid1.ExcelNOW.GetConnect() in c:\inetpub\wwwroot\datagrid1\excelnow.aspx.cs:84
DataGrid1.ExcelNOW.Button1_Click(Object sender, EventArgs e) in c:\inetpub\wwwroot\datagrid1\excelnow.aspx.cs:122
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1277第二个问题!
请看我的excel的格式改成这样的话:322 中文 22
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 中文
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 中文 中文
-----------------------------
插入成功了,但是在数据库中有中文的地方动没有显示!!
如下:
ID dept sum
--------------------------------
2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 ---------------------------------
如果全是数字就没有问题,以上问题请大家指点!!!谢了???
解决方案 »
- 模板引擎中使用服务器控件,有办法么?
- 关于页面布局问题,请教一下
- 请教asp.net中联动的下拉菜单怎么做,用SelectedIndexChanged方法会刷新页面,不好.有其他办法吗?
- asp.net中c#里如何用Dropdownlist加入DATAGRID模板列中
- 存储过程与参数
- 我得datagrid有各模板按钮列,是删除功能,我想在点击删除时弹出确认框?怎么实现?
- 能否在vs.net2002下面使用Framework1.1?
- 疑问asp??
- 初学者的问题--水晶报表怎么不显示??
- 在DataSet中如何操作记录?
- onmouseover怎么没有反应呢?
- 对服务器端文件进行写操作被拒绝!如何解决?
string mystring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath(".//")+"book.xls;Extended Properties=Excel 8.0";
OleDbConnection cnnxls = new OleDbConnection (mystring);
OleDbDataAdapter myDa =new OleDbDataAdapter("select * from [Sheet1$]",cnnxls);
DataSet myDs =new DataSet();
// 将 Excel 的[Sheet1]表内容填充到 DataSet 对象
myDa.Fill(myDs); DataGrid1.DataSource=myDs;
DataGrid1.DataBind();
//循环取excel数据
string strSql="";
for(int i=0; i<myDs.Tables[0].Rows.Count; i++)
{
InsertNews(myDs.Tables[0].Rows[i][0].ToString(),myDs.Tables[0].Rows[i][1].ToString(),myDs.Tables[0].Rows[i][2].ToString());
}private void InsertNews(string id,string dept,string sum)
{
Public.OpenDataBase();
SqlCommand myCommand=new SqlCommand("hh_InsertNews", Public.conn);;
myCommand.CommandType=CommandType.StoredProcedure; myCommand.Parameters.Add(new SqlParameter("@ID",SqlDbType.VarChar,50));
myCommand.Parameters["@ID"].Value=id; myCommand.Parameters.Add(new SqlParameter("@dept",SqlDbType.VarChar,50));
myCommand.Parameters["@dept"].Value=dept; myCommand.Parameters.Add(new SqlParameter("@sum",SqlDbType.VarChar,50));
myCommand.Parameters["@sum"].Value=sum; myCommand.ExecuteNonQuery();
Public.CloseDataBase();
}
CREATE PROCEDURE hh_InsertNews @id varchar(50),@dept varchar(50),@sum varchar(50)
AS
insert into news values(@id,@dept,@sum)
GOInsertNews调的就是这个
myDa.Fill(myDs,"[Sheet1$]");
将数据库中的中文字段设成 nvarchar
哪里有啊!外部表不是预期的格式。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 外部表不是预期的格式。源错误:
行 82: DataSet myDs =new DataSet();
行 83: // 将 Excel 的[Sheet1]表内容填充到 DataSet 对象
行 84: myDa.Fill(myDs,“[Sheet1]”);
行 85:
行 86: if(myDs.Tables[0].Rows.Count > 0)
堆栈跟踪:
[OleDbException (0x80004005): 外部表不是预期的格式。]