OleDbConnection的方式 操作excel文件, 但是在sql语句操作excel文件时,where后面如何表示文本的值相等?

samyp1234 2010-10-01 03:58:45
有一个excel文件,叫2.xls,在C盘下,有2个sheet,一个叫 工作区1,其中有 学号、姓名、住址 这三列,另一个叫 ss,其中有 学号、姓名 这两列。

现在的要求是:把这 2个sheet中的 学号列、但是姓名不同的 记录,取出来,使用 OleDbConnection的方式 放到一个 DataSet里去。


由于 表中的 学号列是 文本类型, 我不知道在sql语句操作excel文件时,where 后面 如何 表示文本的值相等?

string filePath = "c:\\2.xls";
DataSet ds = new DataSet();

string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filePath + ";" + "Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);

conn.Open();

// 这个 sql 语句,不知道怎么写
string s = "select a.学号, a.姓名,a.住址, b.学号, b.姓名 from [工作区1$] a , [ss$] b where a.学号 = b.学号 and a.姓名 <> b.姓名";


OleDbDataAdapter myCommand = new OleDbDataAdapter(s, strConn);
myCommand.Fill(ds, s);


盼望大家教我, 非常非常感谢。

...全文
174 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
samyp1234 2010-10-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jointan 的回复:]

如果两列的类型不一致,可以试试:
string s = "select a.学号, a.姓名,a.住址, b.学号, b.姓名 from [工作区1$] a , [ss$] b where CSTR(a.学号) = CSTR(b.学号) and a.姓名 <> b.姓名";
[/Quote]

就是 这种情况, 学号列 有数字格式,有 文本格式, 所以出错, 这个写法也 不对。

非常谢谢大家。
wuyq11 2010-10-01
  • 打赏
  • 举报
回复
select * from opendatasource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\Test.xls')...[Sheet1$]
select * from openrowset('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\Test.xls',[Sheet1$])
select * from openrowset('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\Test.xls','select * from [Sheet1$]')
实现查询操作
jointan 2010-10-01
  • 打赏
  • 举报
回复
如果两列的类型不一致,可以试试:
string s = "select a.学号, a.姓名,a.住址, b.学号, b.姓名 from [工作区1$] a , [ss$] b where CSTR(a.学号) = CSTR(b.学号) and a.姓名 <> b.姓名";
jointan 2010-10-01
  • 打赏
  • 举报
回复
string s = "select a.学号, a.姓名,a.住址, b.学号, b.姓名 from [工作区1$] a , [ss$] b where a.学号 = b.学号 and a.姓名 <> b.姓名";
你这不是写出来了吗?

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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