链接excle的语句是:myConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file_path + ";Extended Properties=Excel 8.0;"); OleDbDataAdapter oda = new OleDbDataAdapter("select * from [" + table_name + "]", myConnection);
DataSet ds = new DataSet();结构ds中除了获得的excel的正常数据外,把excle的200多列空白的也查出来了,怎样可以有多少列数据就查询多少列呢?
DataSet ds = new DataSet();结构ds中除了获得的excel的正常数据外,把excle的200多列空白的也查出来了,怎样可以有多少列数据就查询多少列呢?
解决方案 »
- 请问如何在虚拟主机中使用URLRewrite??
- 各位大哥,有一段登录时的代码小弟我看不懂,帮忙看看解释一下!
- 今天面试题 没搞出来 出丑了
- 以'&#'+4位数字+';'表示一个字 是什么编码?
- 在ASPNET中DATAREADER所使用的返回值是什么?
- 用asp.net+sql anywhere发布时,需要哪些anywhere的dll
- 请教,IIS可以启动, 但无法访问本地网站!
- 我怎么可以得到dataset中指定的数据
- IIS发布网站,求大侠帮忙
- 我用VB.net做了一个组件,请问要不要加构造函数??
- 移动产品小数据更新方案,求在线编辑txt,编辑后此txt地址不变网络硬盘
- 问个Timer 问题
#region 读取Excel文件内容到DataSet中
public static DataSet ReadExcel(string xlsPath)
{
// 读取Excel数据,填充DataSet
// 连接字符串
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\";" + // 指定扩展属性为 Microsoft Excel 8.0 (97) 9.0 (2000) 10.0 (2002),并且第一行作为数据返回,且以文本方式读取
"data source=" + xlsPath + ";";
string sql_F = "SELECT * FROM [{0}]"; System.Data.OleDb.OleDbConnection conn = null;
System.Data.OleDb.OleDbDataAdapter da = null;
System.Data.DataTable tblSchema = null;
IList<string> tblNames = null; // 初始化连接,并打开
conn = new System.Data.OleDb.OleDbConnection(connStr);
try
{
conn.Open();
}
catch (Exception ex)
{
throw ex;
}
// 获取数据源的表定义元数据
//tblSchema = conn.GetSchema("Tables");
tblSchema = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); //关闭连接
conn.Close(); tblNames = new List<string>();
foreach (DataRow row in tblSchema.Rows)
{
tblNames.Add((string)row["TABLE_NAME"]); // 读取表名
} // 初始化适配器
da = new System.Data.OleDb.OleDbDataAdapter();
// 准备数据,导入DataSet
DataSet ds = new DataSet(); foreach (string tblName in tblNames)
{
da.SelectCommand = new System.Data.OleDb.OleDbCommand(String.Format(sql_F, tblName), conn);
try
{
da.Fill(ds, tblName);
}
catch
{
// 关闭连接
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
throw;
}
} // 关闭连接
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
return ds;
}
#endregion
将select * from ....替换成
select 字段1,字段2,字段3,字段4,字段5 ...from...
也就是说将你要查询的字段都列出来这样就不会出现空白列
因为在这里 excle的格式布局不确定的 所有没法知道具体有多少列,列名是什么
OleDbDataAdapter oda = new OleDbDataAdapter("select * from [" + table_name + "] where id<>'' and name<>'' ", myConnection);