读书人

100分解决 无法找到表 0解决方案

发布时间: 2012-05-16 11:12:12 作者: rapoo

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标签出问题了
------解决方案--------------------


探讨
引用:

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

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

什么意思呢?
表名问题?

格式化表名而已,你那个表名是什么?是Sheet1不是??

[解决办法]
protected void Button1_Click(object sender, EventArgs e)
{



string strSheetName = "sheet1";
string filePath = "";
string getErrMsg = "";
DataSet excelDs = new DataSet();
//从Excel读取数据
filePath = FileUpload1.PostedFile.FileName;
string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;IMEX=1'";
OleDbConnection excelConn = new OleDbConnection(connString);
excelConn.Open();
OleDbDataAdapter ExcelDA = new OleDbDataAdapter("SELECT * FROM [888888$] ", excelConn);
try
{
ExcelDA.Fill(excelDs, "[888888$]");
}
catch (Exception err)
{
Response.Write(err.Message);
}
finally
{
excelConn.Close();
excelConn = null;
}
//将数据写入数据库
if (excelDs.Tables[0].Rows.Count != 0)
{
string connectionString = "server=.;uid=sa;password=123456;database=LiXi";
string sql = "";
SqlConnection sqlConn = new SqlConnection(connectionString);
SqlCommand myCommand = new SqlCommand();
sqlConn.Open();
myCommand.Connection = sqlConn;
myCommand.CommandType = CommandType.Text;
SqlTransaction myTrans = sqlConn.BeginTransaction();
myCommand.Transaction = myTrans;
String dingshu = "";
String fenjian = "";
String chebuding = "";
try
{
for (int i = 0; i < excelDs.Tables[0].Rows.Count; i++)
{

String BuMing = excelDs.Tables[0].Rows[i]["部门"].ToString();


String XingMing = excelDs.Tables[0].Rows[i]["姓名"].ToString();
int DJHaoMan = int.Parse(excelDs.Tables[0].Rows[i]["登记号码"].ToString());

String time = excelDs.Tables[0].Rows[i]["日期时间"].ToString();
String ZhuangTai = excelDs.Tables[0].Rows[i]["记录状态"].ToString();


sql = "insert into JiLu(BuMen,XingMing,DJHaoMan,Time,ZhuangTai) values('" + BuMing + "','" + XingMing + "'," + DJHaoMan + ",'" + time + "','" + ZhuangTai + "')";
myCommand.CommandText = sql;
myCommand.ExecuteNonQuery();

}
myTrans.Commit();
}
catch (Exception ex)
{
getErrMsg = ex.Message.ToString();
Response.Write(ex.Message.ToString());
myTrans.Rollback();
}
finally
{
sqlConn.Close();
sqlConn = null;
}

}
}

注:
SELECT * FROM [888888$] 888888为excel表名。
如:excelDs.Tables[0].Rows[i]["部门"].ToString();为excel表中的列名。
这是excel2003版本的。
[解决办法]
这个我碰到过,分全给我把,包你解决!
原因是本地测试是本地有EXCEL文件,放到IIS上找不到EXCEL文件,所以要先把这个文件上传到服务器,在读取这个文件!再读取SHEET里的数据,OVER!


[解决办法]

探讨

这个我碰到过,分全给我把,包你解决!
原因是本地测试是本地有EXCEL文件,放到IIS上找不到EXCEL文件,所以要先把这个文件上传到服务器,在读取这个文件!再读取SHEET里的数据,OVER!

[解决办法]
IIS上没有注册.net

读书人网 >asp.net

热点推荐