用Oledb; 打开Excel或Access表时我现在只能读出指定的表 (比如Sheet1什么的). 但现在如果是未知的表, 表的个数也不知道; 而我现在最好能知道有多少个表, 每个表叫什么名字, 这样我就可以把多个表都读出来. 大家知道这个应该是怎么办么? 谢谢!

解决方案 »

  1.   


    貌似引用MS的Excel DLL之后 可以对Excel进行编程, 进而遍历、操作Sheet
      

  2.   

    嗯, 确实. 但现在我做的这个东西是要在机器里没有Excel的情况下运行... 所以就得用诸如OleDb之类的东西了.
      

  3.   

    string Path = @"c:\a.xls";
                string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";
                System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(strConn);
                conn.Open();
                System.Data.DataTable table= conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);            foreach(System.Data.DataRow drow in table.Rows)
                {
                    Console.WriteLine(drow["TABLE_NAME"]);
                }
                Console.ReadKey(true);
      

  4.   

    一个更加完整的版本using System;
    namespace ConsoleApplication11
    {
        class Program
        {
            public static void Main()
            {
                getExcelFileInfo(@"c:\a.xls");
            }
            private static void getExcelFileInfo(string Path)
            {
                string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";
                System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(strConn);
                conn.Open();
                System.Data.DataTable table = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);            foreach (System.Data.DataRow drow in table.Rows)
                {
                    string TableName = drow["Table_Name"].ToString();
                    Console.WriteLine(TableName+":");
                    System.Data.DataTable tableColumns = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Columns, new object[] { null, null, TableName ,null});
                    foreach (System.Data.DataRow drowColumns in tableColumns.Rows)
                    {
                        string ColumnName = drowColumns["Column_Name"].ToString();
                        Console.WriteLine("\t"+ColumnName);
                    }
                }
                Console.ReadKey(true);
            }
        }
    }
      

  5.   

    用COM编程遍历Sheet列表,直接把他们导出成List,自己确定导出谁