我想写段公用得导入导出函数里面可以让用户去选择Excel的工作表名字还有里面的字段名
不想通过VBA这种方式因为要杀死excel或者是word 进程几乎是不可能的事情,有没有一种更好的办法呢?

解决方案 »

  1.   

    System.Data.OleDb.OleDbConnection db = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Documents and Settings\\Administrator\\桌面\\aa.xls;Extended Properties=Excel 8.0;HDR=Yes;IMEX=1");
                db.Open();
                DataTable dt = db.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
                db.Close();
                return dt;
      

  2.   

    workSheets字段为 "TABLE_NAME";
      

  3.   

    using(OleDbConnection cn = new OleDbConnection(this.str))
                {
    try{cn.Open();}
    catch{Error.DataBase();}
    this.dataTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
    if(this.dataTable.Rows.Count<1)
    {
    Error.Sheet();
    return;
    } this.str       = "select * from [" + this.dataTable.Rows[0]["TABLE_NAME"].ToString() +"]";
      

  4.   

    我只知道用OLE对象来获得, 把它当数据源还没试过
    看高手来解决
      

  5.   

    private void W_InputOrOutPutSelect_Load(object sender, System.EventArgs e)
    {
    System.Windows.Forms.OpenFileDialog TheOpenFile = new OpenFileDialog();
    TheOpenFile.ShowDialog();
    string ExcelFilePath = TheOpenFile.FileName;
    string strConn = "" ;
    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExcelFilePath + ";Extended Properties=Excel 8.0;";
    System.Data.OleDb.OleDbConnection TheOLEDBConnection = new System.Data.OleDb.OleDbConnection(strConn);
    try
    {
    TheOLEDBConnection.Open();
    System.Data.DataTable  DT = TheOLEDBConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables_Info,null);

    TheOLEDBConnection.Close();
    MessageBox.Show(DT.TableName.ToString(),"");
    }
    catch(Exception Err)
    {
    string ErrText  = Err.ToString();

    }

    }
    这个就是我的代码 我的本意是在不知道Excel中到底有多少个工作表的时候怎么用程序取得工作表的数目还有工作表名 然后通过这些表名取得其列名然后生成SQL语句,取得数据放到DataSet中去完成导入的操作 
    哪位高手可以解决呢???????????不通过VBA
      

  6.   

    困扰中,如何做????
    [email protected]