2016-01-22 6 views
0

Форум.ExcelDataReader - для чего используется раздел методов чтения данных?

Referencing: https://github.com/ExcelDataReader/ExcelDataReader

C# code : 

FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read); 

//1. Reading from a binary Excel file ('97-2003 format; *.xls) 
IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream); 

//2. Reading from a OpenXml Excel file (2007 format; *.xlsx) 
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); 

//3. DataSet - The result of each spreadsheet will be created in the result.Tables 
DataSet result = excelReader.AsDataSet(); 

//4. DataSet - Create column names from first row 
excelReader.IsFirstRowAsColumnNames = true; 
DataSet result = excelReader.AsDataSet(); 

//5. Data Reader methods 
while (excelReader.Read()) 
{ 
    //excelReader.GetInt32(0); 
} 

//6. Free resources (IExcelDataReader is IDisposable) 
excelReader.Close(); 

Мой код:

private void dataGridView1_DragDrop(object sender, DragEventArgs e) 
     { 
      Debug.WriteLine("OnDragDrop"); 
      if (validData) 
      { 
       try 
       { 
        FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read); 

        //1. Reading from a binary Excel file ('97-2003 format; *.xls) 
        IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream); 

        //2. DataSet - The result of each spreadsheet will be created in the result.Tables 
        excelReader.IsFirstRowAsColumnNames = true; 
        DataSet result = excelReader.AsDataSet(); 

        //3. Data Reader methods 
        while (excelReader.Read()) 
        { 
         //excelReader.GetInt32(0); 
        } 

        dataGridView1.DataSource = result.Tables[0]; 

        //6. Free resources (IExcelDataReader is IDisposable) 
        excelReader.Close(); 

        createEmployees(result); 
       } 
       catch (Exception ex) 
       { 
        MessageBox.Show(ex.ToString()); 
       } 
      } 
     } 

Мой вопрос, что раздел 'Методы чтения данных' используется?

Моя первоначальная мысль заключалась в том, что это было для преобразования данных до того, как они были прочитаны в DataSet. После перехода через код я вижу, что результат DataSet уже установлен на шаге 3/4 и, таким образом, не происходит никакого преобразования или массирования данных. Учитывая это, я не уверен, для чего служит код excelReader.Read().

+1

Похоже, что они имели в виду 3, 4 * или * 5 вместо 3, 4 * и * 5. То же самое касается шагов 1 и 2, вы не можете использовать оба для одного и того же файла. –

+0

@PieterWitvoet Спасибо, что имеет больше смысла. В документации не было ясно. – HappyCoding

ответ

2

Это можно использовать, если вы не хотите использовать DataSet, но вместо этого прочитайте отдельные строки/столбцы.

Read устанавливает курсор читателя в следующую строку. Если в результатах больше нет строки, она возвращает false.

Таким образом, хотя Read возвращает true, вы можете прочитать отдельные столбцы текущей строки:

while(excelReader.Read()) 
{ 
    int i = excelReader.GetInt32(0); // 0 is the column index in your result set 
    string text = excelReader.IsDbNull(1) ? string.Empty : excelReader.GetString(1); 
    // etc... 
} 

Вы должны знать порядок столбцов в наборе результатов.

Посмотрите на интерфейс documentation of IDataReader и его методы Get* для получения дополнительной информации.

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

  • Нет связанных вопросов^_^