那你就不会先drop table把sheet1清空,然后把你自己create的table贴在sheet1里,再把sheet1的名字改了嘛

解决方案 »

  1.   

    我每次create的表都不一样,是insert不进sheet1的, 另外 oledb 怎么修改 execel 工作薄 名的?
      

  2.   

    1.参考下这个//以datatable的形式返回sheet的内容
           public DataTable ShowSheet(string filePath, string sheetName)
           {
               string strConn = FatherForm.xml._excConn1 + filePath + FatherForm.xml._excConn2;
               OleDbConnection conn = new OleDbConnection(strConn);
               conn.Open();
               string sql = "select * from [" + sheetName + "$]";
               OleDbDataAdapter da = new OleDbDataAdapter(sql, conn);
               DataTable dt = new DataTable();
               da.Fill(dt);
               conn.Close();
               return dt;
           }都能返回一个dt,插入到sheet不难,这里就不写了。
    2.//返回所有sheet名
           public string[] ImportExcel(string filePath)
           {
               string strConn = FatherForm.xml._excConn1 + filePath + FatherForm.xml._excConn2;
               OleDbConnection conn = new OleDbConnection(strConn);
               conn.Open();           DataTable dt=conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[]{null,null,null,"table"});
               int len=dt.Rows.Count;
               string[] sheetNames = new string[len];
               int start;
               for (start = 0; start < len; start++)
               {
                   string allName=dt.Rows[start]["TABLE_NAME"].ToString();
                   sheetNames[start] = allName.Replace("$","");//remove $ sysmbol
               }          
               conn.Close();
               return sheetNames;
           }
      

  3.   

    1. 你这只是读excel的数据源 , 和 把不同的表插入excel 是不同的概念2. 你这依然是读表名,不是改表名
      

  4.   

     #region 去除多余SHEET
                    for (int i = m_objBook.Sheets.Count; i >= 1; i--)
                    {
                        Excel.Worksheet worksheetDataDel = (Excel.Worksheet)m_objBook.Sheets.get_Item(i);
                        if (worksheetDataDel.Name.ToLower() == "sheet1" || worksheetDataDel.Name.ToLower() == "sheet2" || worksheetDataDel.Name.ToLower() == "sheet3")
                        {
                            worksheetDataDel.Delete();
                        }
                    }
                    #endregion
      

  5.   

    我现在就是不想用excel com 方式, 使用这种方式老是碰到各种意外
      

  6.   

    明白楼主的concern. 支持一下!