我一直用来读Excel的方法是,原来一直没有出过问题,代码如下:
DataSet ds=new DataSet();
try
{
ds.Clear();
string strPower="Provider=Microsoft.Jet.OLEDB.4.0;"+"Data Source="
+excelName+";"+@"Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""";
OleDbConnection objconn=new OleDbConnection(strPower);
OleDbDataAdapter objAdapter=new OleDbDataAdapter("select * from ["+strSheetName+"$]",objconn);
objAdapter.Fill(ds,"Table");
objAdapter.Dispose();
objconn.Close();
}
catch(Exception e)
{
ds=null;
}
通过传入"excelName"和"Sheet"来读出这个Excel,从而返回DataTable查看了很多帖子,发现大家一直都是这样写的,但是今天我再使用的时候却发现:
抛出“外部表不是预期的格式”这个异常!我换了很多的Excel(我机器上做的,同时机器上做的)来进行测试,发现都不行,当场昏倒!!!!!!!!!不知道各位同仁有没有碰到过如此问题,如果有相关的经验,还望赐教!!!不胜感激啊!!
DataSet ds=new DataSet();
try
{
ds.Clear();
string strPower="Provider=Microsoft.Jet.OLEDB.4.0;"+"Data Source="
+excelName+";"+@"Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""";
OleDbConnection objconn=new OleDbConnection(strPower);
OleDbDataAdapter objAdapter=new OleDbDataAdapter("select * from ["+strSheetName+"$]",objconn);
objAdapter.Fill(ds,"Table");
objAdapter.Dispose();
objconn.Close();
}
catch(Exception e)
{
ds=null;
}
通过传入"excelName"和"Sheet"来读出这个Excel,从而返回DataTable查看了很多帖子,发现大家一直都是这样写的,但是今天我再使用的时候却发现:
抛出“外部表不是预期的格式”这个异常!我换了很多的Excel(我机器上做的,同时机器上做的)来进行测试,发现都不行,当场昏倒!!!!!!!!!不知道各位同仁有没有碰到过如此问题,如果有相关的经验,还望赐教!!!不胜感激啊!!
解决方案 »
- 网页中编辑xml文件
- asp.net用gridView时显示详细信息出问题了
- 同志们,大家帮小弟做一个asp.net的期末作业啊!急求~
- visible='<%#Eval("fin_shenhe")>0?true:false; %>'这个错那了~我怎么看都看不出~
- 新手问这么几个问题,vs.net2005下的asp.net的问题
- 问一个DropdownList和DataSource的问题
- ●●●●.net Remoting的奇怪问题?●●●●
- 问个多数据库连接的问题!不够分可以开贴再加!
- 如何把一个超链接赋给一个变量?
- 打开上传服务器文件,如果为TXT格式时,会将页面生成的HTML代码写入到文本中
- 问一个DataSet 和 SqlDataAdapter 使用的问题!
- 如何在一个公用类中使用response.redirect~
当我换成
try
{
ds.Clear();
string strPower="Provider=Microsoft.Jet.OLEDB.4.0;"+@"Data Source=D:\临时存放 \yang\交换设备调整结果_JerryLiu.xls"+";"+@"Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""";
OleDbConnection objconn=new OleDbConnection(strPower);
OleDbDataAdapter objAdapter=new OleDbDataAdapter("select * from ["+strSheetName+"$]",objconn);
objAdapter.Fill(ds,"Table");
objAdapter.Dispose();
objconn.Close();
}上述的路径写死,让他读我的一个文件就可以通过,奇怪的很勒!因为是用户上传,我必须先临时保存用户上传的Exel,我使用的是:
string serverPath="d:\\Temp.xls";
e.CurrentUploadFile.SaveAs(serverPath);.....DataTable dt_original=WOReadExcel.GetExcelData(serverPath,"Sheet1");注:上述的代码的方法为DataTable GetExcelData(string excelName,string strSheetName)
写了这么多,主要是想介绍清楚我的问题,还望各位有经验的同仁给点你的经验!!
谢谢!谢谢!
会不会是两个斜杠的缘故?
你应该仔细查查你的代码e.CurrentUploadFile.SaveAs(serverPath);
这个ServerPath所指向的文件是不是已经保存在服务器上了,且文件的内容是不是一样?
我想你的问题可能出在这里!一点儿经验之谈,希望可以帮到你^_^
在web.config里加入
<identity impersonate="true" userName="administrator" password=""/>
下面代码是我测试过的string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = c:\\sample.xls;Extended Properties=Excel 8.0" ;
OleDbConnection myConn = new OleDbConnection ( strCon ) ;
myConn.Open ( ) ; string strCom1 = " SELECT * FROM [Sheet1$] " ; //选择出数据
//string strCom1 = "update [Sheet1$] set name='ggg' " ;//更新数据 "name"--> (excel里第一行数据相当于字段名)
OleDbCommand myconmm=new OleDbCommand (strCom1,myConn);
myconmm.ExecuteNonQuery ();
//打开数据链接,得到一个数据集
OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;
//创建一个 DataSet对象DataSet myDataSet = new DataSet ( ) ;
//得到自己的DataSet对象
myCommand.Fill ( myDataSet , "[Sheet1$]" ) ;
//关闭此数据链接
myConn.Close ( ) ;