在读取 Excel 时,可能会这样:SELECT * FROM [sheet1$]其中,[sheet1$] 表示 Excel 内工作表的名称。现在我的情况是,这个工作表会经常改名,所以我只好根据sheet编号来读取了。但是这个应该怎么写呢?谢谢!

解决方案 »

  1.   


    public string[] GetExcelSheetName(string p_strFilePath)
            {
                OleDbConnection conn = new OleDbConnection(m_strExcelConnectionString + p_strFilePath);            try
                {
                    conn.Open();                DataTable dtSchema = conn.GetOleDbSchemaTable(
                        OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });                string[] strTableName = new string[dtSchema.Rows.Count];                for (int i = 0; i < dtSchema.Rows.Count; i++)
                    {
                        strTableName[i] = dtSchema.Rows[i]["TABLE_NAME"].ToString();
                    }                return strTableName;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    conn.Close();
                }
            }
    一个获取sheet名的函数,传入一个Excel文件路径,返回sheet名数组
      

  2.   


    private Excel.Application m_objExcelApp;              //Excelのインスタンス
    private Excel.Workbook m_objExcelWorkBook;            //ワークブックのインスタンス
    private Excel.Worksheet m_objExcelWorkSheet;          //ワークシートのインスタンスm_objExcelApp = new Excel.Application();
    m_objExcelWorkBook = m_objExcelApp.Workbooks.Open( p_strExcelFileName, Type.Missing, 
                    true,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,
                    Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,
                    Type.Missing,Type.Missing);
    m_objExcelWorkSheet =(Excel.Worksheet)m_objExcelWorkBook.Sheets[1];//取得第一个sheet的实例
      

  3.   

    再谢谢2楼,我想采用1楼的方法比较好,不用添加Office引用
      

  4.   

    1 楼请问,我获取的工作表名称是 'sheet1$' ,怎么会有对单引号呢?
      

  5.   

    不知道为什么,我用的是日文Excel,没你说的问题。就算有单引号去掉也很简单阿