【读Excel的问题,不知道大家有没有碰到过,还望各位只要知道的都来帮帮忙,时间很紧迫!谢谢,谢谢!】

bullnade 2005-12-22 11:46:29
我一直用来读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(我机器上做的,同时机器上做的)来进行测试,发现都不行,当场昏倒!!!!!!!!!

不知道各位同仁有没有碰到过如此问题,如果有相关的经验,还望赐教!!!不胜感激啊!!
...全文
172 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
happyboy19821123 2006-01-10
  • 打赏
  • 举报
回复
感谢大家,我学了一招!
bullnade 2005-12-29
  • 打赏
  • 举报
回复
在这里感谢liuyong_lll,我出现的问题正好是你所讲的^_^,谢谢!

对于各位,在这里也感谢大家,希望以后可以共同进步!
aspczlover 2005-12-28
  • 打赏
  • 举报
回复
确保进行了dcom配置,并且引用了excel
下面代码是我测试过的

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 ( ) ;
aspczlover 2005-12-28
  • 打赏
  • 举报
回复
进行身份验证,因为操作某些应用程序需要身份验证,比如excel,word等等
在web.config里加入
<identity impersonate="true" userName="administrator" password=""/>
radio_3000 2005-12-24
  • 打赏
  • 举报
回复
应该是路径的\\的问题 程序里用两个 sql里面用一个\
yydwtbml 2005-12-24
  • 打赏
  • 举报
回复
用Dcomcnfg命令对Microsoft Word进行配置,试试吧。
liuyong_lll 2005-12-24
  • 打赏
  • 举报
回复
真是不幸,这个也算是奇怪了,MS的EXCEL有时候是比较奇怪的,也不是太懂....^_^


你应该仔细查查你的代码e.CurrentUploadFile.SaveAs(serverPath);
这个ServerPath所指向的文件是不是已经保存在服务器上了,且文件的内容是不是一样?


我想你的问题可能出在这里!

一点儿经验之谈,希望可以帮到你^_^
搬运工木木 2005-12-22
  • 打赏
  • 举报
回复
string serverPath="d:\\Temp.xls";
会不会是两个斜杠的缘故?
bullnade 2005-12-22
  • 打赏
  • 举报
回复
我又仔细的测试了一下:
当我换成
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)


写了这么多,主要是想介绍清楚我的问题,还望各位有经验的同仁给点你的经验!!
谢谢!谢谢!

62,041

社区成员

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

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

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

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