我在做Execl数据导入数据库表中,要求是先把上传的数据预览一遍,,我的做法是,先把Execl数据绑定到Gridview中,如果没有问题的话,点确定导入按钮,把数据插入到表中,代码如下:
protected void Button1_Click(object sender, EventArgs e)
{
GridView1.DataSource = CreateExeclDataSource();
GridView1.DataBind();
}
private System.Data.DataSet CreateExeclDataSource()
{
HttpPostedFile hpf = FileUpload2.PostedFile;
FileInfo FI = new FileInfo(FileUpload2.PostedFile.FileName);
String FirstName = FI.FullName;
string txtPath = Path.GetFileName(hpf.FileName); hpf.SaveAs(Server.MapPath("~/cmsadmin\\" + Path.GetFileName(txtPath)));
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(txtPath)+ ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [Sheet1$]", strConn);
DataSet ds = new DataSet();
oada.Fill(ds);
ds.Dispose();
return ds; }这代码把execl数据绑定到GridView1,
点确定导入按钮代码是 string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(FileUpload2.PostedFile.FileName) + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [Sheet1$]", strConn);
DataSet ds = new DataSet();
oada.Fill(ds);
if (ds.Tables[0].Rows.Count > 0)
{
foreach (DataRow dr in ds.Tables[0].Rows)
{
CMMember cmmember = new CMMember();
cmmember.Salutation = dr["Salutation"].ToString();
cmmember.Firstname = dr["First name"].ToString();
cmmember.Lastname = dr["Last name"].ToString();
cmmember.Company = dr["Company Name"].ToString(); ;
cmmember.Address = dr["Address"].ToString();
cmmember.City = dr["City"].ToString();
cmmember.Country = dr["Country"].ToString();
cmmember.Tel = dr["Tel"].ToString();
cmmember.Did = dr["DID"].ToString();
cmmember.Fax = dr["Fax"].ToString();
cmmember.Mobile = dr["Mobile"].ToString();
cmmember.Email = dr["Email"].ToString();
CMHotelCollection Ohotel = new CMHotelCollection();
Ohotel.ListAll();
ArrayList Hotellist = Ohotel.List;
for (int i = 0; i < Hotellist.Count; i++)
{
if (dr["Hotel"].ToString() == (((CMHotel)Hotellist[i]).Name))
{
cmmember.Hotel = ((CMHotel)Hotellist[i]).Sid + ","; String[] arr = dr["ed+m options"].ToString().Split(',');
for (int k = 0; k < arr.Length; k++)
{
cmmember.Outlet = cmmember.Outlet + arr[k].ToString() + ",";
Response.Write(arr[k].ToString() + ",");
}
}
} cmmember.Create();
报的错误是:No error message available, result code: E_FAIL(0x80004005). 我搞不定这个错误,大家帮忙看看,或许是我点确定导入按钮中的代码错了啊,求解答案
protected void Button1_Click(object sender, EventArgs e)
{
GridView1.DataSource = CreateExeclDataSource();
GridView1.DataBind();
}
private System.Data.DataSet CreateExeclDataSource()
{
HttpPostedFile hpf = FileUpload2.PostedFile;
FileInfo FI = new FileInfo(FileUpload2.PostedFile.FileName);
String FirstName = FI.FullName;
string txtPath = Path.GetFileName(hpf.FileName); hpf.SaveAs(Server.MapPath("~/cmsadmin\\" + Path.GetFileName(txtPath)));
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(txtPath)+ ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [Sheet1$]", strConn);
DataSet ds = new DataSet();
oada.Fill(ds);
ds.Dispose();
return ds; }这代码把execl数据绑定到GridView1,
点确定导入按钮代码是 string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(FileUpload2.PostedFile.FileName) + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [Sheet1$]", strConn);
DataSet ds = new DataSet();
oada.Fill(ds);
if (ds.Tables[0].Rows.Count > 0)
{
foreach (DataRow dr in ds.Tables[0].Rows)
{
CMMember cmmember = new CMMember();
cmmember.Salutation = dr["Salutation"].ToString();
cmmember.Firstname = dr["First name"].ToString();
cmmember.Lastname = dr["Last name"].ToString();
cmmember.Company = dr["Company Name"].ToString(); ;
cmmember.Address = dr["Address"].ToString();
cmmember.City = dr["City"].ToString();
cmmember.Country = dr["Country"].ToString();
cmmember.Tel = dr["Tel"].ToString();
cmmember.Did = dr["DID"].ToString();
cmmember.Fax = dr["Fax"].ToString();
cmmember.Mobile = dr["Mobile"].ToString();
cmmember.Email = dr["Email"].ToString();
CMHotelCollection Ohotel = new CMHotelCollection();
Ohotel.ListAll();
ArrayList Hotellist = Ohotel.List;
for (int i = 0; i < Hotellist.Count; i++)
{
if (dr["Hotel"].ToString() == (((CMHotel)Hotellist[i]).Name))
{
cmmember.Hotel = ((CMHotel)Hotellist[i]).Sid + ","; String[] arr = dr["ed+m options"].ToString().Split(',');
for (int k = 0; k < arr.Length; k++)
{
cmmember.Outlet = cmmember.Outlet + arr[k].ToString() + ",";
Response.Write(arr[k].ToString() + ",");
}
}
} cmmember.Create();
报的错误是:No error message available, result code: E_FAIL(0x80004005). 我搞不定这个错误,大家帮忙看看,或许是我点确定导入按钮中的代码错了啊,求解答案
解决方案 »
- 子窗体传图片路径给父窗体,父窗体显示图片问题
- APS.NET 提示框 急急急
- javascript获取的值怎么传给asp.net
- 请教:EXCEl中单元格中,asp.net读不到里面的数据
- 我急~~~~~~~~~~数据库连不上了!
- 使用ASP.Net显示目录及文件信息时为什么有访问限制?
- 求助用正则替换字符串并输出内容
- [菜鸟提问]从网上下了一个留言本的例子,运行时报一下错误,请问是什么原因?
- 在datagrid中使用 编辑、更新、取消 这三个按钮列,怎样才能激活他们所对应的事件?
- 简单3问之3:下载控件(代码)用不了
- 能不能提供页面不用服务器控件的一些思路。。有些repeater不可能改吧
- asp.net里面移动网页如何调用样式文件!
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(txtPath)+ ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";
=》
string filePath=Server.MapPath("~/cmsadmin\\" + Path.GetFileName(txtPath));
hpf.SaveAs(filePath);
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath+ ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";