日期:2014-05-17  浏览次数:20530 次

100分,解决 无法找到表 0
excel 导入到 Dataset,本地测试 没有问题,

因朋友的机器有IIS 就测试了下,测试结果均为 无法找到表 0。

朋友电脑有装excel。

求解决方案! 百度没找到答案。

------解决方案--------------------
DataSet里没有表,在使用DataSet[0]之前先判断表的个数是否大于0
------解决方案--------------------
探讨

引用:
DataSet里没有表,在使用DataSet[0]之前先判断表的个数是否大于0

我在本地测试正常。

------解决方案--------------------
那就检查一下你的excel是不是excel2003的,而你朋友的那个上面是如excel2007的,或是其他情况,这个就看你的导入代码了。

string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1'";

类似这样的设置不能向上兼容造成的。


还有这样的,是不是excel表名问题??

 strExcel = string.Format("select * from [{0}$]", sheetName);


------解决方案--------------------
探讨

引用:
还有这样的,是不是excel表名问题??

strExcel = string.Format("select * from [{0}$]", sheetName);

什么意思呢?
表名问题?

------解决方案--------------------
C# code
在读取dataset的地方
前面加个语句
if(ds!=null&&ds.Tables.Count<1)
Response.Write("<script>alert('玛德,没获取到数据,挂了');</script>");


你编译后再去试试。如果打出这句话,说明是获取数据问题了啊

------解决方案--------------------
一般都是因为通讯错误,没连上数据库
------解决方案--------------------
首先定位问题在哪嘛
------解决方案--------------------
C# code

if(ds==null || ds!=null&&ds.Tables.Count<1)
Response.Write("<script>alert('玛德,没获取到数据,挂了');</script>");

------解决方案--------------------
C/C++ code
 // xlsx
 connStr = "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" + newName +
  ";Extended Properties='Excel 12.0 Xml; HDR=YES; IMEX=1'";
          
 //xls 
 connStr = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + newName +
 ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";  
 //检查连接语句..可能是excel版本不一致

//检查下 表格的名称 是否不是sheet  尽量不要写死 一下是动态获取的名称代码
DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
var tableName = dt.Rows[0][2].ToString().Trim();
var str1 = string.Format("Select * from [{0}]", tableName+"A:F");

------解决方案--------------------
探讨
excel 导入到 Dataset,本地测试 没有问题,

因朋友的机器有IIS 就测试了下,测试结果均为 无法找到表 0。

朋友电脑有装excel。

求解决方案! 百度没找到答案。

------解决方案--------------------
看一下是不是你朋友的电脑的Excel版本和项目上的一样?
------解决方案--------------------
我遇到过报一样的错,但或许各数据源的解决方法并不一定一致吧,仅供参考。

无法找到表0 的意思就是无法找到第 0 个表,也就是说 DataSet 中的表未始化,或者其中根本没有表。
表0 不是说表名叫表0,此时 0 是一个索引值


老以前,我们项目中有出错,是因为 Framework 或其他类中一些返回值不够规范导致的。试想,一个签名为返回 DataTable 类型的方法却返回了 null,就导致没有表。
------解决方案--------------------
贴一下你和你朋友机器配置,操作系统不同(特别是32位于64位),office不同都可能有影响
------解决方案--------------------
用老一些版本的office插件试试
------解决方案--------------------
个人感觉应该是sheet标签出问题了
------解决方案--------------------