2017-04-07 11 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); 

アレイ内のすべてのシート名を取得する方法が不思議です。私はあなたがNuGet経由でパッケージEPPlusを追加し、次のスニペット

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

答えて

2

は、

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++; 
} 
これを試してみてください
関連する問題