0

Helle guy,Мой выход excel не приходит как я хотел

Я пытаюсь создать изготовленный на заказ excel выход. Но моя вещь заключается в том, что он не дает мне выход. Как только код достигнет if (fline.Designator == null), он покажет мне ошибку. Пожалуйста, взгляните на мою проблему и дайте мне решение.

коды: -

private void button1_Click(object sender, EventArgs e) 
    { 
     string[] strLines = System.IO.File.ReadAllLines(textBox1.Text); 

     string line = string.Empty; 
     string CarouselName = enter.Text; 
     int iCarousel = 0; 
     char seperator = '\t'; 

     SortedDictionary<string, ExcelData> lstExcel = new SortedDictionary<string, ExcelData>(); 
     ExcelData fline = null; 
     for (int i = 0; i < strLines.Length; i++) 
     { 
      line = RemoveWhiteSpace(strLines[i]).Trim(); 
      if (line.Length == 0) 
       continue; 
      string[] cells = line.Replace("\"", "").Split(seperator); 


      if (i > 0) 
      { 
       if (!lstExcel.ContainsKey(cells[1].Replace(" ", "_"))) 
       { 
        fline = new ExcelData(); 
        lstExcel.Add(cells[1].Replace(" ", "_"), fline); 
        fline.Footprint = cells[2].Replace(" ", "_"); 
        fline.Comment = cells[1].Replace(" ", "_"); 

        iCarousel++; 
        if (iCarousel > 45) 
         iCarousel = 1; 
        fline.Location = CarouselName; 
       } 
       else 
       { 
        fline = lstExcel[cells[1].Replace(" ", "_")]; 
       } 
       fline.SrNo++; 
       fline.Total++; 
      } 

      if (fline.Designator == null)// here its showing the error.. 
       // i don't know why its the code is incorrect. please help me out!! 
       fline.Designator = new List<string>(); 
      fline.Designator.Add(cells[0].Replace(" ", "_")); 

     } 
     ExportInExcel(lstExcel, @"C:\Users\Stacy\Desktop\myExcel.xls"); 
     System.Windows.Forms.Application.Exit(); 

    } 
+1

Какое сообщение об ошибке? – grovesNL

+0

@grovesNL https://imageshack.com/i/f0tIFW6Dj Пожалуйста, lok к ошибке –

ответ

1

Глядя на ваш for петли, fline никогда не инициализируется.

Первоначально, есть строка:

ExcelData fline = null; 

Во время for цикла, начиная с int i=0 у вас есть if (i > 0), который присваивает значения fline в таком состоянии. Однако в случае, когда i=0, fline никогда не назначается значение.

Следовательно, при проверке fline.Designator == null, когда i=0 в вашем цикле for, он выдает исключение. Исключением является то, что вам было сообщено, что fline не был предоставлен экземпляр объекта ExcelData. Другими словами, fline имеет нулевое значение: он не имеет значений свойств.

Я не уверен, точно, что ваше if (i > 0) условия проверки, но ваше решение в конечном счете, либо:

  • Изменения if (i > 0) к if (i >= 0), тем самым обработкам i=0 дела в ваших обычных условиях, или .. .
  • Создание экземпляра fline в какой-то момент для i=0 кейс. Вы можете сделать это, когда вы изначально объявите переменную: ExcelData fline = new ExcelData(); вместо ExcelData fline = null; (перед вашей петлей).
+0

Когда я сменил i> 0 на 'i> = 0', он отлично работал. Большое спасибо. –

1

Мое предположение - ваша ошибка - исключение для ссылки на null. В вашем методе инициализация fline с null:

ExcelData fline = null; 

Затем вы входите в for петли, и вы начинаете перебор от 0 (int i = 0). Вы также отелю об: if (i > 0) где вы инициализировать переменную fline с экземпляром класса ExcelData:

fline = new ExcelData(); 

Заметим, однако, что это происходит только для i больше 0.

Так что же происходит, когда i является 0 - и это в случае первой итерации цикла. Когда вы впервые итерации i is 0.Таким образом, вы пропустите fline инициализацию внутри if заявления и вы по-прежнему непосредственно

if (fline.Designator == null) 

Здесь вы попробуете доступ fline, но он никогда не был инициализирован. Таким образом, вы получаете исключение для исключения ссылок.