关于EXCEL导入SQL的问题

sadan2121 2007-12-24 01:47:28
在SQL查询分析器的语句
SELECT *
INTO excel111
FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0', 'Excel 8.0;HDR=YES;DATABASE=F:\wjq\hhh.xls', sheet1$) AS derivedtbl_1
报错
服务器: 消息 7399,级别 16,状态 1,行 1
OLE DB 提供程序 'MICROSOFT.JET.OLEDB.4.0' 报错。
[OLE/DB provider returned message: 找不到可安装的 ISAM。]
OLE DB 错误跟踪[OLE/DB Provider 'MICROSOFT.JET.OLEDB.4.0' IDBInitialize::Initialize returned 0x80004005: ]。
然后,在类里的程序
if (strFileName == "") return null;
strConn = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + strFileName + " ;Extended Properties=Excel 8.0; HDR=Yes";
OleDbDataAdapter excelDA = new OleDbDataAdapter("select * from [Sheet1$]", this.strConn);
DataTable ExcelDt = new DataTable();
try
{
excelDA.Fill(ExcelDt, "ExcelInfo");
}
catch (Exception ee)
{
int i = 0;
}
return ExcelDt;
这2个都有错误,第2个错误是
ServerVersion = “excelDA.SelectCommand.Connection.ServerVersion”引发了“System.InvalidOperationException”类型的异常
base {System.SystemException} = {"无效操作。连接被关闭。"}
...全文
440 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
要你命叁仟 2011-11-17
  • 打赏
  • 举报
回复
我也是这种问题,最后发现是字符串的标记关键字写错了,楼主可以参考一下
sadan2121 2007-12-28
  • 打赏
  • 举报
回复
我让他们用别的机子试了一下,是没有问题的
可是在我们单位的机子上试就有问题,我想可能是我们单位的系统有问题把
lunaticx 2007-12-28
  • 打赏
  • 举报
回复
试试这个:

string source = File1.Value;
string ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=\"Excel 8.0;IMEX=1\";data source=" + source;
string query = "SELECT * FROM [Sheet1$]";
OleDbConnection odction = new OleDbConnection(ConnStr);
odction.Open();
OleDbCommand oleCommand = new OleDbCommand(query, odction);
OleDbDataAdapter oleAdapter = new OleDbDataAdapter(oleCommand);
DataSet myDataSet = new DataSet();
oleAdapter.Fill(myDataSet, "[Sheet1$]");
GridView2.DataSource = myDataSet;
GridView2.DataMember = "[Sheet1$]";
GridView2.DataBind();
odction.Close();
sadan2121 2007-12-28
  • 打赏
  • 举报
回复
现在结帖给分
hxlyjy 2007-12-27
  • 打赏
  • 举报
回复
string source = File1.Value;
string ConnStr = "Provider=microsoft.jet.oledb.4.0;Data Source =" + source + ";Extended Properties=Excel 8.0;HDR=Yes;IMEX=1;Persist Security Info=False";
string query = "SELECT * FROM [Sheet1$]";
OleDbConnection odction=new OleDbConnection(ConnStr);
odction.open();//打开连接
OleDbCommand oleCommand = new OleDbCommand(query, odction);

OleDbDataAdapter oleAdapter = new OleDbDataAdapter(oleCommand);
DataSet myDataSet = new DataSet();

oleAdapter.Fill(myDataSet, "[Sheet1$]");

GridView2.DataSource = myDataSet;
GridView2.DataMember = "[Sheet1$]";
GridView2.DataBind();
sadan2121 2007-12-27
  • 打赏
  • 举报
回复
string source = File1.Value;
string ConnStr = "Provider=microsoft.jet.oledb.4.0;Data Source =" + source + ";Extended Properties=Excel 8.0;HDR=Yes;IMEX=1;Persist Security Info=False";
string query = "SELECT * FROM [Sheet1$]";
OleDbConnection odction=new OleDbConnection(ConnStr);

OleDbCommand oleCommand = new OleDbCommand(query, odction);

OleDbDataAdapter oleAdapter = new OleDbDataAdapter(oleCommand);
DataSet myDataSet = new DataSet();

oleAdapter.Fill(myDataSet, "[Sheet1$]");

GridView2.DataSource = myDataSet;
GridView2.DataMember = "[Sheet1$]";
GridView2.DataBind();
这个是程序
可以看到有那里错误的吗
lunaticx 2007-12-27
  • 打赏
  • 举报
回复
回11楼:
ServerVersion = “myDa.SelectCommand.Connection.ServerVersion”引发了“System.InvalidOperationException”类型的异常
base {System.SystemException} = {"无效操作。连接被关闭。"}
楼上的2位都报这个异常

============================================

执行SQL语句之前判断Connection的状态,如果是Closed,就Open(),在执行完SQL语句后,记得关闭Connection。
HarrisonXu 2007-12-27
  • 打赏
  • 举报
回复
顶/
sadan2121 2007-12-27
  • 打赏
  • 举报
回复
在odction.open()这里有错误
错误是“找不到可安装的 ISAM。”
sadan2121 2007-12-26
  • 打赏
  • 举报
回复
出现这个原因不会是我的系统有问题把
sadan2121 2007-12-26
  • 打赏
  • 举报
回复
。。。。。。。。。。。。。。。。。。。。。。。。
sadan2121 2007-12-26
  • 打赏
  • 举报
回复
不能沉贴啊
sadan2121 2007-12-26
  • 打赏
  • 举报
回复
SQL语句
SELECT *
INTO excel
FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0', 'Excel 8.0;HDR=YES;DATABASE=F:\wjq\hhh.xls', [Sheet1$]) AS derivedtbl_1
我是的EXCEL文件名是hhh.xls
位置是在F盘下的wjq文件夹
我这么写的路径应该正确啊F:\wjq\hhh.xls'
为什么还是报错误呢
服务器: 消息 7399,级别 16,状态 1,行 1
OLE DB 提供程序 'MICROSOFT.JET.OLEDB.4.0' 报错。
[OLE/DB provider returned message: 找不到可安装的 ISAM。]
OLE DB 错误跟踪[OLE/DB Provider 'MICROSOFT.JET.OLEDB.4.0' IDBInitialize::Initialize returned 0x80004005: ]。
Alex99cn 2007-12-26
  • 打赏
  • 举报
回复
找不到可安装的ISAM可能原因:1.文件路径是否正确;2.sheet1$加[]
try again:)
sadan2121 2007-12-26
  • 打赏
  • 举报
回复
15楼的是不是有这个表啊,我现在需要的是没有表也要导入
有表的我也需要,先记下这个写法,谢谢拉
sadan2121 2007-12-26
  • 打赏
  • 举报
回复
为什么我在网上看别人的程序和书上的程序都是这么写的,都没有错,为什么我这么写就有错误啊
sadan2121 2007-12-26
  • 打赏
  • 举报
回复
14楼
我用那个语句出现的错误
OLE DB 提供程序 'MICROSOFT.JET.OLEDB.4.0' 报错。
[OLE/DB provider returned message: 找不到可安装的 ISAM。]
OLE DB 错误跟踪[OLE/DB Provider 'MICROSOFT.JET.OLEDB.4.0' IDBInitialize::Initialize returned 0x80004005: ]。
sadan2121 2007-12-26
  • 打赏
  • 举报
回复
17楼,我怎么才能得到错误的代码啊,我这个异常是用断点看出来的我只知道
OleDbDataAdapter excelDA = new OleDbDataAdapter("select * from [Sheet1$]", this.strConn); 这个有异常
lunaticx 2007-12-26
  • 打赏
  • 举报
回复
回11楼:
ServerVersion = “myDa.SelectCommand.Connection.ServerVersion”引发了“System.InvalidOperationException”类型的异常
base {System.SystemException} = {"无效操作。连接被关闭。"}
楼上的2位都报这个异常


报这个异常就已经证明数据连接的地方通过了。

把你报错部分的代码帖出来看看,可能是你使用了一个已经自动关闭或自动回收的对象。
zmaini1420 2007-12-26
  • 打赏
  • 举报
回复
可能是你点excel表的格式有点问题,你把你的表格另存下,导数据的时候碰到过这样的问题
友情帮顶一下!
加载更多回复(15)

110,539

社区成员

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

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

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