excle文件读入webform中的dataGrid的问题,急,在线等 D:\\contacts.xls/////这个文件具体在什么地方,首先你需要正确连接到这个文件 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是这样的,我先把contacts.xls直接放在d盘下,但是,出现了找不到表的问题,后来看了孟子e章的文章,又放到了C:\\Inetpub\\wwwroot\\contacts.xls,没想到情况更糟,出现了权限问题。 这个文件不是随便放,如果比如你放D盘可能是因为权限问题你找不到将这个文件放在和你的.cs同一目录下,然后连接的时候这么写:string Str="Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0; Data Source="+Server.MapPath("contacts.xls"); 好的,我试试先.麻烦acewang了 错误在这一句string Sele="SELECT * FROM [ContactList$]",表明不是ContactList即excle的文件名,而是excle工作表名,默认是Sheet1,Sheet2,Sheet3....string Sele="SELECT * FROM [Sheet1$]", Excel文件的路径指定正确吗?'ContactList$'应该是Sheet的名称,你的对应吗? string Str="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\contacts.xls; Extended Properties=Excel 8.0;";OleDbConnection Conn=new OleDbConnection(Str);Conn.Open();string Sele="SELECT * FROM [ContactList$]";//不能用下面的OleDbCommand command=new OleDbCommand(Sele,Conn);OdbcDataAdapter ada = new OdbcDataAdapter();DataSet oDs = new DataSet();ada.Fill(oDs , command);//填充数据datagrid1.DataSource = oDs;datagrid1.DataBind(); string Str="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\contacts.xls; Extended Properties=Excel 8.0;";OleDbConnection Conn=new OleDbConnection(Str);Conn.Open();string Sele="SELECT * FROM [ContactList$]";OdbcDataAdapter ada = new OdbcDataAdapter(Sele , Conn);DataSet oDs = new DataSet();ada.Fill(oDs);datagrid1.DataSource = oDs;datagrid1.DataBind(); acewang的方法,我试过了,系统提示是:System.Data.OleDb.OleDbException: 找不到可安装的 ISAM。这是怎么一回事啊?另外,我的excel表中的sheet1我已经改成了ContactList,应该不是这个造成的问题。 rroo(天之痕)你的方法里有个OdbcDataAdapter,这个和OleDbConnection好象不能联系在一起吧。 找不到可安装的 ISAM/////////////一般就是连接字符串写的有问题,你贴出来我看一下 尤其注意Data Source中间有空格 string Str="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("contacts.xls")+"; Extended Properties=Excel 8.0;HDR=Yes;"; excel文件你放在d盘,这种做法是对的.你的出错信息"文件已被独立用户打开",绝对是权限的问题,你看看.xls文件所在文件夹是否有写的权限,你的这句:Data Source="+Server.MapPath("contacts.xls")+"; Server.MapPath()应该是指"C:\\Inetpub\\wwwroot\\contacts.xls,"之类的,但你的文件在D盘,找不到这个文件. 我给你method你吧!public bool ReadExcelToDataSet(string strFileName,string strSheet,DataSet ds){ try { string strConn; strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source="+strFileName+";Extended Properties=Excel 8.0;"; string strSQLCommand="SELECT * FROM ["+strSheet+"$]"; OleDbConnection conn = new OleDbConnection(strConn); OleDbDataAdapter myCommand = new OleDbDataAdapter(strSQLCommand, strConn); myCommand.Fill(ds,strSheet); return true; } catch { }} 你的Excel和你的*.cs文件在同一目录下面string Str="Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0; Data Source="+Server.MapPath("contacts.xls")+";"; 已经ok了,还是acewang的连接字段的写法是正确的,谢谢各位了,马上结帐。 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件 关于C#中*.resx文件的汉化问题 c#传参数,在线等。谢谢各位 调用外部dll 文件的问题,请不吝赐教! 关于格式化磁盘和读取硬盘的问题~ 高手请指点一下,DataGridViewComboBoxColumn 选值的问题 请教图片上传的问题 C#的异常是否需要声明,如果未声明,上层程序如何知道需要捕捉什么样的异常? 做过权限管理和想做权限管理的人进来(附我的思路) C#有一字符串加密问题,望高手赐教 怎么在Console的任意位置输出一段文本? 为何我treeview控件的时间触发不了?
后来看了孟子e章的文章,又放到了C:\\Inetpub\\wwwroot\\contacts.xls,没想到
情况更糟,出现了权限问题。
将这个文件放在和你的.cs同一目录下,然后连接的时候这么写:
string Str="Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0; Data Source="+Server.MapPath("contacts.xls");
表明不是ContactList即excle的文件名,而是excle工作表名,默认是Sheet1,Sheet2,Sheet3....
string Sele="SELECT * FROM [Sheet1$]",
'ContactList$'应该是Sheet的名称,你的对应吗?
OleDbConnection Conn=new OleDbConnection(Str);
Conn.Open();
string Sele="SELECT * FROM [ContactList$]";
//不能用下面的
OleDbCommand command=new OleDbCommand(Sele,Conn);
OdbcDataAdapter ada = new OdbcDataAdapter();
DataSet oDs = new DataSet();
ada.Fill(oDs , command);//填充数据
datagrid1.DataSource = oDs;
datagrid1.DataBind();
OleDbConnection Conn=new OleDbConnection(Str);
Conn.Open();
string Sele="SELECT * FROM [ContactList$]";
OdbcDataAdapter ada = new OdbcDataAdapter(Sele , Conn);
DataSet oDs = new DataSet();
ada.Fill(oDs);
datagrid1.DataSource = oDs;
datagrid1.DataBind();
这是怎么一回事啊?
另外,我的excel表中的sheet1我已经改成了ContactList,应该不是这个造成的问题。
在一起吧。
/////////////
一般就是连接字符串写的有问题,你贴出来我看一下
HDR=Yes;";
你的出错信息"文件已被独立用户打开",绝对是权限的问题,你看看.xls文件所在文件夹是否有写的权限,
你的这句:
Data Source="+Server.MapPath("contacts.xls")+";
Server.MapPath()
应该是指"C:\\Inetpub\\wwwroot\\contacts.xls,"之类的,但你的文件在D盘,
找不到这个文件.
public bool ReadExcelToDataSet(string strFileName,string strSheet,DataSet ds)
{
try
{
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source="+strFileName+";Extended Properties=Excel 8.0;";
string strSQLCommand="SELECT * FROM ["+strSheet+"$]";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter myCommand = new OleDbDataAdapter(strSQLCommand, strConn);
myCommand.Fill(ds,strSheet);
return true;
}
catch
{
}
}
string Str="Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0; Data Source="+Server.MapPath("contacts.xls")+";";