2017-01-11 2 views
2

Я пишу библиотеку C# для чтения файлов Excel без каких-либо других зависимостей, таких как библиотека OLDEB (AccessDatabaseEngine).получить имена столбцов excel, используя exceldatareader

Итак, я выбрал библиотеку ExcelDataReader для чтения файлов .XLS и .XLSX.

ExcelDataReader отлично работает с обоими форматами файлов с локальной и серверной средой развертывания.

Я столкнулся с проблемой, как получить все имена столбцов из заданных файлов Excel?

+0

Что вы имеете в виду под названиями колонок? Как A, B, C, как показано в Excel или? –

ответ

0

Самый простой способ сделать это - сделать как DataTableCollection, так и DataColumnCollection, чтобы вы могли использовать обычные запросы Linq над ними.

Например:

var stream = File.Open(@"C:\temp\Book1.xlsx", FileMode.Open, FileAccess.Read); 

var excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); 

var result = excelReader.AsDataSet(); 

var tables = result.Tables 
        .Cast<DataTable>() 
        .Select(t => new { 
            TableName = t.TableName, 
            Columns = t.Columns 
               .Cast<DataColumn>() 
               .Select(x => x.ColumnName) 
               .ToList() 
          }); 

Причина литая необходима потому, что как DataTableCollection и DataColumnCollection только реализовать IEnumerable и не IEnumerable<T> как они датируются дней до дженериков.

Для того чтобы этот код работал, ваша электронная таблица должна содержать определенные таблицы, а не только данные.

Смежные вопросы