Чтение Excel файла взять данные из колонки

304
14 мая 2017, 21:34

Возникла проблема с чтением excel файла, мне нужно взять данные из колонки с определенным именем.

            //ExcelDataReader works on binary excel file
            Stream stream = uploadfile.InputStream;
            //We need to written the Interface.
            IExcelDataReader reader = null;
            if (uploadfile.FileName.EndsWith(".xls"))
            {
                //reads the excel file with .xls extension
                reader = ExcelReaderFactory.CreateBinaryReader(stream);
            }
            else if (uploadfile.FileName.EndsWith(".xlsx"))
            {
                //reads excel file with .xlsx extension
                reader = ExcelReaderFactory.CreateOpenXmlReader(stream);
            }
            else
            {
                //Shows error if uploaded file is not Excel file
                ModelState.AddModelError("File", "This file format is not supported");
                return View();
            }
            //treats the first row of excel file as Coluymn Names
            reader.IsFirstRowAsColumnNames = true;
            //Adding reader data to DataSet()
            DataSet result = reader.AsDataSet();
            reader.Close();
            foreach (DataColumn column in result.Tables[0].Columns)
            {
                if (column.ColumnName == "EAN")
                {
                }
            }

Но в таком случаи из файла читаются колонки из нулевой позиции.

А мне нужно прочесть на позицию ниже, но у меня не получается.

И как мне получить данные из этого столбца до самого конца?

Answer 1

Что то типа:

for (int i=0; i++; i<result.Tables[0].Columns.Count)
    {
        DataColumn column = result.Tables[0].Columns[i];
        if (column.ColumnName == "EAN")
            {
                foreach (DataRow row in result.Tables[0].Rows)
                {
                    console.WriteLine(row[i]);
                }
                break;
            }
        }
   }
Answer 2

Если использовать: Как просто работать с / открыть / изменить / сохранить Excel / CSV файлы

то можно просто взять и прочитать циклом все

csv.Rows[i][НомерНужнойКолонки]

сделав еще иф который проверяет существует ли такой номер в даной строке :)

Но нужно иметь ввиду что эта либа не умеет работать с ".xls" файлами

READ ALSO
Как обозначить pictureBox на переднем плане?

Как обозначить pictureBox на переднем плане?

Проблема в том, что при повторном запуске приложения (с защитой от повторного запуска), каким-то образом теряются правила расположения pictureBox,...

237
C# программы на Windows XP

C# программы на Windows XP

Будут ли работать программы написанные на c# (Visual Studio 2012) на ОС Windows XP? Какую версию NET Framework поддерживает XP без дополнительных установок ?

352
byte array to sha256 c#

byte array to sha256 c#

Нужно передать byte[] array в функцию sha256

266
Отладка скриптов из partial view в chrome

Отладка скриптов из partial view в chrome

Для отладки js кода использую "Инструменты разработчика" браузера Chrome, но заметил что если скрипт располагается в partial view файле, то его не видно...

226