C++Builder 程序员博客
28 Nov
DataModule2->ADOQueryInport->Active =false;
DataModule2->ADOQueryInport->ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\smaster.xls;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1;\"";
DataModule2->ADOQueryInport->SQL->Text = "select * into 原始数据表 from [smaster$]";
DataModule2->ADOQueryInport->Open();
出现错误:不能更新 数据库或对象为只读,怎么解决?
如果单独执行SQL可以成功,试试将
DataModule2->ADOQueryInport->Open();
改成
DataModule2->ADOQueryInport->ExecSQL();
改了不行
// 可能是你运行这段代码的时候,这个Excel文件已经在外面被你打开 // 或者是已经被其他的进程打开了,处于独占状态,这样该Excel文件是没有办法被你现在的程序所在的进程访问的,是只读的 // 先把该文件关闭掉,还有最好结束掉其他的Excel.exe进程
漫总我这段代码有问题吗?
// 给点以前写的一个demo AnsiString ds,strCn; //ds记录Excel文件的全路径 if(OpenDialog1->Execute())//选择文件对话框打开后执行,否则不执行 { ds=OpenDialog1->FileName; //获取Excel文件全路径 strCn = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source="; strCn = strCn + ds + ";Extended Properties=’Excel 8.0;HDR=Yes’"; //excel数据库连接串 ADOQuery1->ConnectionString =strCn; try { ADOQuery1->SQL->Clear(); //清空sql ADOQuery1->SQL->Add(" select * from [sheet1$]") ; //添加sql ADOQuery1->Active = true; //打开数据库,并且执行查询语句 } catch(…) { // …….异常处理代码 } }