利用OleDb.NET读取Excel中的资料没有问题,但是在进行Insert和Delete时出现异常,
無法從特定的資料表中刪除。
運作必須使用更新查詢。 

以下是关键部分代码:     public int DeleteRows()
    {
        int flag = 0;
        OleDbConnection conn = new OleDbConnection(connectionString);
        OleDbCommand cmd = new OleDbCommand("delete from [Sheet3$]", conn);
        try
        {
            cmd.Connection.Open();
            cmd.ExecuteNonQuery();
        }
        catch(Exception ex)
        {
            flag = 1;
            throw new Exception(ex.Message);
        }
        finally
        {
            cmd.Connection.Close();
        }
        return flag;
    }
    public int InsertRow()
    {
        int flag = 0;
        OleDbConnection conn = new OleDbConnection(connectionString);
        OleDbCommand cmd = new OleDbCommand("insert into [Sheet3$](A,B,C) values(7,8,9)", conn);
        try
        {
            cmd.Connection.Open();
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            flag = 1;
            throw new Exception(ex.Message);
        }
        finally
        {
            cmd.Connection.Close();
        }
        return flag;
    }删除和新增的代码已给出,不知各位高手有何办法解决,谢谢!

解决方案 »

  1.   

    我知道问题原因了,OleDb可以对Excel进行Insert,Update动作,当然还包括Select,但是不支持Delete.
      

  2.   

    用 Excel.Application导入相应的DLL 和命名空间
      

  3.   


    using Microsoft.Office.Interop.Excel; Excel.Application myExcel; 
    myExcel = new Excel.Application(); /// <summary> 
    /// 删除一个区域 
    /// </summary> 
    /// <param name="startRow"></param> 
    /// <param name="startColumn"></param> 
    /// <param name="endRow"></param> 
    /// <param name="endColumn"></param> 
    public void Delete(int startRow, int startColumn, int endRow, int endColumn, 
                                                             bool IsDeleteEntireRow) 

        Excel.Range range = myExcel.get_Range(myExcel.Cells[startRow, startColumn], 
                                                         myExcel.Cells[endRow, endColumn]); 
        range.Select(); 
        if (IsDeleteEntireRow)//是否整行删除 
             range.EntireRow.Delete(XlDeleteShiftDirection.xlShiftUp); 
        else 
            range.Delete(XlDeleteShiftDirection.xlShiftUp);