C# excel选择所有表格/工作表名称

C# excel选择所有表格/工作表名称,c#,excel,C#,Excel,我正在使用SQL查询Excel文件,我知道我可以通过以下方式获得工作表的内容: var ds = new DataSet(); var conn = new OleDbConnection(); conn.Open(); var cmd = new OleDbDataAdapter("Select * FROM [Sheet1$]", conn); cmd.Fill(ds, "ds1"); 我想问有没有办法得到所有的表名 我试过了,但没用。你是想从所有工作表中获取数据吗? 如果是,请参阅下面的

我正在使用SQL查询Excel文件,我知道我可以通过以下方式获得工作表的内容:

var ds = new DataSet();
var conn = new OleDbConnection();
conn.Open();
var cmd = new OleDbDataAdapter("Select * FROM [Sheet1$]", conn);
cmd.Fill(ds, "ds1");
我想问有没有办法得到所有的表名


我试过了,但没用。

你是想从所有工作表中获取数据吗? 如果是,请参阅下面的帖子:


您是否询问从所有工作表中获取数据? 如果是,请参阅下面的帖子:


我尝试了示例链接中的代码,它对我有效:

            var result = reader.AsDataSet(new ExcelDataSetConfiguration()
            {
                UseColumnDataType = true,
                ConfigureDataTable = (data) => new ExcelDataTableConfiguration()
                {
                    UseHeaderRow = true
                }
            });

            DataTableCollection tables = result.Tables;

            for (int i = 0; i < tables.Count; i++)
            {
                Console.WriteLine(tables[i].TableName);
                //here I can work with current table
                for (int j = 0; j < tables[i].Columns.Count; j++)
                {
                    Console.WriteLine(tables[i].Columns[j].ColumnName);
                }
            }
var result=reader.AsDataSet(新的ExcelDataSetConfiguration()
{
UseColumnDataType=true,
ConfigureDataTable=(数据)=>new ExcelDataTableConfiguration()
{
UseHeaderRow=true
}
});
DataTableCollection tables=result.tables;
for(int i=0;i
我尝试了示例链接中的代码,它对我有效:

            var result = reader.AsDataSet(new ExcelDataSetConfiguration()
            {
                UseColumnDataType = true,
                ConfigureDataTable = (data) => new ExcelDataTableConfiguration()
                {
                    UseHeaderRow = true
                }
            });

            DataTableCollection tables = result.Tables;

            for (int i = 0; i < tables.Count; i++)
            {
                Console.WriteLine(tables[i].TableName);
                //here I can work with current table
                for (int j = 0; j < tables[i].Columns.Count; j++)
                {
                    Console.WriteLine(tables[i].Columns[j].ColumnName);
                }
            }
var result=reader.AsDataSet(新的ExcelDataSetConfiguration()
{
UseColumnDataType=true,
ConfigureDataTable=(数据)=>new ExcelDataTableConfiguration()
{
UseHeaderRow=true
}
});
DataTableCollection tables=result.tables;
for(int i=0;i
我只是想通过以下方式获取所有工作表的名称:

var ds = new DataSet();
var conn = _connNoHeader = new OleDbConnection(string.Format("Provider={0};Extended Properties=\"Excel 8.0;IMEX=1;HDR=No;\";Data Source={1}", provider, filePath));           
conn.Open();

DataTable tables = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, 
                                             new object[] { null, null, null, "TABLE" });

Console.WriteLine("The tables are:");
foreach (DataRow row in tables.Rows)
    Console.Write("  {0}", row[2]);

// here are all worksheet name
var allWorksheetNames = tables.Rows.OfType<DataRow>().Select(row => row[2].ToString().TrimEnd('$')).ToList();
var ds=new DataSet();
var conn=\u connNoHeader=new OleDbConnection(string.Format(“Provider={0};Extended Properties=\”Excel 8.0;IMEX=1;HDR=No;\“数据源={1}”,Provider,filePath));
conn.Open();
DataTables=conn.GetOleDbSchemaTable(OleDbSchemaGuid.tables,
新对象[]{null,null,null,“表”});
控制台.WriteLine(“表是:”);
foreach(tables.Rows中的DataRow行)
Write(“{0}”,第[2]行);
//以下是所有工作表的名称
var allWorksheetNames=tables.Rows.OfType().Select(row=>row[2].ToString().TrimEnd(“$”).ToList();
这个解决方案来自于


其他答案也很有用!

我只是想通过以下方式获得所有工作表的名称:

var ds = new DataSet();
var conn = _connNoHeader = new OleDbConnection(string.Format("Provider={0};Extended Properties=\"Excel 8.0;IMEX=1;HDR=No;\";Data Source={1}", provider, filePath));           
conn.Open();

DataTable tables = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, 
                                             new object[] { null, null, null, "TABLE" });

Console.WriteLine("The tables are:");
foreach (DataRow row in tables.Rows)
    Console.Write("  {0}", row[2]);

// here are all worksheet name
var allWorksheetNames = tables.Rows.OfType<DataRow>().Select(row => row[2].ToString().TrimEnd('$')).ToList();
var ds=new DataSet();
var conn=\u connNoHeader=new OleDbConnection(string.Format(“Provider={0};Extended Properties=\”Excel 8.0;IMEX=1;HDR=No;\“数据源={1}”,Provider,filePath));
conn.Open();
DataTables=conn.GetOleDbSchemaTable(OleDbSchemaGuid.tables,
新对象[]{null,null,null,“表”});
控制台.WriteLine(“表是:”);
foreach(tables.Rows中的DataRow行)
Write(“{0}”,第[2]行);
//以下是所有工作表的名称
var allWorksheetNames=tables.Rows.OfType().Select(row=>row[2].ToString().TrimEnd(“$”).ToList();
这个解决方案来自于

其他答案也很有用