查询excel数据导入datatable 空白列也出来了

weiaizoutianya11 2012-05-31 10:47:49
链接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多列空白的也查出来了,怎样可以有多少列数据就查询多少列呢?
...全文
224 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
DreamStony 2012-07-03
  • 打赏
  • 举报
回复
你可以根据语句筛查,将空列的数据去除
 OleDbDataAdapter oda = new OleDbDataAdapter("select * from [" + table_name + "] where id<>'' and name<>''  ", myConnection);
我爱白富美 2012-05-31
  • 打赏
  • 举报
回复
那我想问你,你不用建数据库吗,你数据库字段也没确定?你筛选数据总有个条件吧,根据这些还不能确定?总之问题就这,你都写了select * 还不让空白列出来不是搞笑么,再看看吧
weiaizoutianya11 2012-05-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
引用楼主 的回复:

你的查询语句写的是查询所有数据所以空白列出来了,你把这条语句修改下就可以了
将select * from ....替换成
select 字段1,字段2,字段3,字段4,字段5……
[/Quote]

因为在这里 excle的格式布局不确定的 所有没法知道具体有多少列,列名是什么
我爱白富美 2012-05-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
OleDbDataAdapter oda = new OleDbDataAdapter("select * from [" + table_name + "]", myConnection);
[/Quote]
你的查询语句写的是查询所有数据所以空白列出来了,你把这条语句修改下就可以了
将select * from ....替换成
select 字段1,字段2,字段3,字段4,字段5 ...from...
也就是说将你要查询的字段都列出来这样就不会出现空白列
weiaizoutianya11 2012-05-31
  • 打赏
  • 举报
回复
道理这不是一样的吗? 不行啊 把excle的所有列都查出来了 而excle中真正有数据的就几列
arecaiz 2012-05-31
  • 打赏
  • 举报
回复

#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

62,039

社区成员

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

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

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

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