如何把Excel里的Sheet标签与每个Sheet标签里的数据动态读到(或绑定到)TreeView里去,很急很急,在线等…… 众所周知,在Excel里面有很多个Sheet标签,而在VS.NET里要读取Excel里的资料,是用OleDB数据引擎来读,应此,Excel表名就成了数据库名,而Sheet就成了表名了,但我现在遇到一个难题了,就是要把Excel里的所有的Sheet(包括Sheet里的数据)读到TreeView里去,我是用VS2005的C#做开发的。请问有那位高手可以帮帮我,谢谢了。(因为是新来的,所以给的分数不多,不好意思了) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你先用OleDbConnection.GetOleDbSchemaTable方法返回Excel中所有的sheet,然后对每个sheet查询返回datatable.既然都返回到datatable了,别的就不用说了吧? 那就请你先看看我的写的语句吧: public String[] GetExcelSheetNames() { DataTable dt = null; try { if (_oleDbCon.State == ConnectionState.Closed) { OpenConnection(); } dt = _oleDbCon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); if (dt == null) { return null; } String[] excelSheets = new String[dt.Rows.Count]; int i = 0; foreach (DataRow row in dt.Rows) { string strSheetTableName = row["TABLE_NAME"].ToString(); excelSheets[i] = strSheetTableName.Substring(0, strSheetTableName.Length - 1); i++; } return excelSheets; } catch (Exception ex) { throw ex; } finally { if (dt != null) { dt.Dispose(); dt = null; } }上面的语句是返回了所有的Sheet了,但我不知道要怎么做才能把返回的Sheet与Sheet里的数据如何添加到TreeView里去,能再帮帮忙吗? OleDbDataAdapter da = new OleDbDataAdapter();da.SelectCommand = new OleDbCommand();da.SelectCommand.Connection = _oleDbCon;DataSet ds = new DataSet();foreach (DataRow row in dt.Rows) { string strSheetTableName = row["TABLE_NAME"].ToString(); da.SelectCommand.CommandText = "select * from [" + strSheetTableName +"]"; DataTable dtSheet = new DataTable(); da.Fill(dtSheet,strSheetTableName); ds.Tables.Add(dtSheet); }现在,ds里就是各Sheet的数据了。别忘了将_oleDbCon.Close(); 谢谢你,MyLf,分已经给你加了 lucene.net 搜索结果缓慢 objectdisposedexception was unhandled 异常 计算两个工作日之间的时间差 求C#三层架构图,要求详细点的 c#.net中如何给日期字段赋值? C#获取键值问题 我想在GroupBox中选出那个radiobutton为true的值。 呕心沥血---搞不定!! System.Data.SQL这个命名空间为什么会没有?在线等待! C#简单问题:如何定义一个程序级的字符串? 问个小问题 关于属性的赋值与获取 C#版MD5算法有没有人写过呀?
public String[] GetExcelSheetNames()
{
DataTable dt = null;
try
{
if (_oleDbCon.State == ConnectionState.Closed)
{
OpenConnection();
}
dt = _oleDbCon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (dt == null)
{
return null;
}
String[] excelSheets = new String[dt.Rows.Count];
int i = 0;
foreach (DataRow row in dt.Rows)
{
string strSheetTableName = row["TABLE_NAME"].ToString();
excelSheets[i] = strSheetTableName.Substring(0, strSheetTableName.Length - 1);
i++;
}
return excelSheets;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (dt != null)
{
dt.Dispose();
dt = null;
}
}
上面的语句是返回了所有的Sheet了,但我不知道要怎么做才能把返回的Sheet与Sheet里的数据如何添加到TreeView里去,能再帮帮忙吗?
da.SelectCommand = new OleDbCommand();
da.SelectCommand.Connection = _oleDbCon;
DataSet ds = new DataSet();
foreach (DataRow row in dt.Rows)
{
string strSheetTableName = row["TABLE_NAME"].ToString();
da.SelectCommand.CommandText = "select * from [" + strSheetTableName +"]";
DataTable dtSheet = new DataTable();
da.Fill(dtSheet,strSheetTableName);
ds.Tables.Add(dtSheet);
}
现在,ds里就是各Sheet的数据了。别忘了将_oleDbCon.Close();