2017-04-07 29 views
1

我试图按照与Excel文件中数组相同的顺序获取所有工作表名称。目前,我达到如下单独所有表:按顺序获取Excel文件中的所有工作表名称

var pathToExcel = @"C:\Users\Desktop\Everything.xlsx"; 
var sheetName = "sheet 1"; 
var destinationPath = @"C:\Users\Desktop\sheet1.json"; 
var connectionString = String.Format(@" 
      Provider=Microsoft.ACE.OLEDB.12.0; 
      Data Source={0}; 
      Extended Properties=""Excel 12.0 Xml;HDR=YES"" 
     ", pathToExcel); 

我想知道如何得到数组中的所有工作表名称。

回答

3

试试这个,

OleDbConnection conn = new OleDbConnection(connectionString); 
conn.Open(); 
DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 
String[] sheetNames = new String[dt.Rows.Count]; 
int i = 0; 
foreach (DataRow row in dt.Rows) 
{ 
    sheetNames[i] = row["TABLE_NAME"].ToString(); 
    i++; 
} 
2

我建议你通过的NuGet添加软件包EPPlus并使用下面的代码片段

using (var package = new ExcelPackage("c:\\yourfile.xlsx")) 
    { 
     return package.Workbook.Worksheets.Select(x => x.Name); 
    } 
相关问题