vinodh muthusamy Ответов: 1

Необработанное исключение типа "system. indexoutofrangeexception" произошло в system.data.dll


Я не смог получить значение 7-го столбца из excel, оно выдает ошибку как - Необработанное исключение типа "система".IndexOutOfRangeException ' произошло в System.Data.dll"

и дополнительная информация: не удается найти колонку 7.

Но у меня есть значения в excel для 7-го столбца, даже я не мог получить их после 7-го значения. Я приложил свой excelsheet и кодировку.

Будьте добры, сделайте необходимое.

int j=0;
private void ImportExcel(string strFilePath)
       {
           if (File.Exists(strFilePath))
           {
               String strExcelConn = "Provider=Microsoft.ACE.OLEDB.12.0;"
           + "Data Source=" + strFilePath + ";"
           + "Extended Properties='Excel 8.0;HDR=Yes'";
               connExcel = new OleDbConnection(strExcelConn);
               try
               {
                   cmdExcel.Connection = connExcel;
                   //Check if the Sheet Exists
                   connExcel.Open();
                   DataTable dtExcelSchema;
                   //Get the Schema of the WorkBook
                   dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                   connExcel.Close();
                   //Read Data from Sheet1
                   connExcel.Open();
                   OleDbDataAdapter da = new OleDbDataAdapter();
                   string SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
                   cmdExcel.CommandText = "SELECT * From [" + SheetName + "]";
                   da.SelectCommand = cmdExcel;
                   da.Fill(ds);
                    DisplayText();//Method
               }
               catch (Exception ex)
               {
                   MessageBox.Show(ex.Message, "ImportExcel");
               }
               finally
               {
                   cmdExcel.Dispose();
                   connExcel.Dispose();
               }
           }


private void DisplayText()
      {
          BAngle();
          BFAngle();
      }
      private void BAngle()
      {
          int Angle = 0;
          for (int i = j; i <= ds.Tables[0].Rows.Count; i++)
          {
              string sname = ds.Tables[0].Rows[i][Angle].ToString();
              txt_BSA.Text = sname.ToString();
              txt_BSA.Focus();
           }
      }
      private void BFAngle()
      {
          int Fore = 7;
          for (int i = j; i <= ds.Tables[0].Rows.Count; i++)
          {
              string bname = ds.Tables[0].Rows[i][Fore].ToString();//It throws an error
              txt_BFA.Text = bname.ToString();
              txt_BFA.Focus();
            
          }
      }


Я прикрепил свой лист excel по ссылке ниже.

Excel.xls -Google Диск[^]

Что я уже пробовал:

частная пустота BFAngle()
{
int Fore = 7;
для (тип int я = Дж; я &л;= ДС.Таблицы[0].Строк.Граф; i++)
{
строка имя = ДС.Таблицы[0].Строки[я][передний план].Метод toString();
txt_BFA.Текст = имя.Метод toString();
txt_BFA.Фокус();

}

The Praveen Singh

в вашем excel есть 11 colomn, а в вашем цикле вы установили 7.

1 Ответов

Рейтинг:
1

Patrice T

Попробуйте заменить

for (int i = j; i <= ds.Tables[0].Rows.Count; i++)

с
for (int i = j; i < ds.Tables[0].Rows.Count; i++)

В списке, основанном на 0, последним элементом является Count-1

[Обновление]
Проверьте, если
ds.Tables[0].Rows[i].Count
находится на уровне 8, потому что вы пытаетесь прочитать элемент 7.

[Обновление]
Цитата:
Компилятор показывает ошибку как " оператор Error 1 '<= 'не может быть применен к операндам типа' int ' и 'method group'"
Похоже, вы пытаетесь получить доступ ds.Tables[0].Rows как 2D-массив, когда он на самом деле является 1D-массивом.

ds.Tables[0].Rows[i][Fore] не существуют, потому что
ds.Tables[0].Rows[i] является int и
ds.Tables[0].Rows является массивом


vinodh muthusamy

Я пробовал с кодом, который вы опубликовали, ту же ошибку он бросает.

Любое другое решение Пожалуйста

vinodh muthusamy

ДС.Таблицы[0].Строки[я].Рассчитывать

Компилятор показывает ошибку как " оператор Error 1 '<= 'не может быть применен к операндам типа' int ' и 'method group'"

vinodh muthusamy

К чему такое решение этой

vinodh muthusamy

Пожалуйста, обратитесь к excel, который я дал ссылку, я не могу получить из 7-го столбца значения.

До 6 значений столбцов я могу получить значения

Patrice T

Может быть, вы можете сказать, что это такое ds

vinodh muthusamy

ds-это набор данных