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();

引用 1 楼 yuanreid 的回复:
"select * into 原始数据表 from [smaster$]";
这个SQL能执行成功吗?

LZ估计是将EXCEL当做数据源来做的

改了不行

C/C++ code
// 可能是你运行这段代码的时候,这个Excel文件已经在外面被你打开 // 或者是已经被其他的进程打开了,处于独占状态,这样该Excel文件是没有办法被你现在的程序所在的进程访问的,是只读的 // 先把该文件关闭掉,还有最好结束掉其他的Excel.exe进程

漫总我这段代码有问题吗?

C/C++ code
// 给点以前写的一个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(…) { // …….异常处理代码 } }