关于oledb操作excel的问题
各位高手,我这边想通过oledb连接Excel之后,将一个sheet的内容select出来后,select * into 到另一个sheet中。
代码如下:
public void ExeSql(string filename, string execsql)
{
OleDbConnection con = new OleDbConnection();
try
{
string str = string.Format("Provider=Microsoft.Ace.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0; HDR=Yes;IMEX=0'", filename);
con.ConnectionString = str;
con.Open();
DataSet ds = new DataSet();
OleDbCommand com = new OleDbCommand(execsql,con);
int count=com.ExecuteNonQuery();
}
catch (Exception ex)
{
}
finally
{
if (con != null && con.State == ConnectionState.Open)
con.Close();
}
}
private void Test()
{
string sql = " SELECT * INTO temptt from [Sheet1$] ";
ExcelUtility.Instance.ExeSql("c:\a.xls", sql);
}
我使用select * into之后,本来的excel里面有3条记录
int count=com.ExecuteNonQuery();
这句话之后count返回3,表示3条记录受到影响。然后结果是在excel中。新的sheet是生成出来了。列也是有的,但是行一条也没有。这种方式不知道各位有没有试过。
后来我又测试了“INSRET INTO [temptt$] SELECT * fROM [Sheet1$]” 这句话直接就报
无效的 SQL语句;期待 'DELETE'、'INSERT'、'PROCEDURE'、'SELECT'、或 'UPDATE'
是不是excel不支持insert后面直接跟select的那种方式呢?各位有什么好的办法吗