ExcelDataReader – Pentru ce se utilizează secțiunea Metode de citire a datelor? (Programare, C#, Datareader, Exceldatareader)

HappyCoding a intrebat.

Forum.

Referințe: 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();

Codul meu:

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());
                }
            }
        }

Întrebarea mea este: la ce se folosește secțiunea „Data Reader methods”?

Inițial am crezut că este pentru transformarea datelor înainte de a fi citite în DataSet. Din parcurgerea codului văd că rezultatul DataSet este deja setat la pasul 3/4 și, prin urmare, nu a avut loc nicio transformare sau prelucrare a datelor. Având în vedere acest lucru, nu sunt sigur care este scopul codului excelReader.Read().

Comentarii

  • Se pare că au vrut să spună 3, 4 sau 5, în loc de 3, 4 și 5. Același lucru este valabil și pentru pașii 1 și 2, nu le puteți folosi pe amândouă pentru același fișier. –  > Por Pieter Witvoet.
  • @PieterWitvoet Mulțumesc, asta are mai mult sens. Nu era clar în documentație. –  > Por HappyCoding.
1 răspunsuri
René Vogt

Acest lucru poate fi folosit dacă nu doriți să utilizați DataSet ci citiți în schimb rânduri/coloane individuale.

Read setează cursorul cititorului pe rândul următor. Dacă nu mai există nici un rând în rezultate se întoarce false.

Astfel, în timp ce Read returnează true, puteți citi coloane individuale din rândul curent:

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...
}

Va trebui să cunoașteți ordinea coloanelor din setul de rezultate.

Aruncați o privire la documentație a IDataReader și a interfeței sale Get* metode pentru mai multe informații.