0

Helle guy,내 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 오류 메시지가 있습니다. –

답변

1

당신의 for 루프를 보면은, fline가 초기화되지 않습니다. 그 상태에서 fline에 값을 배정하는 일이 if (i > 0)int i=0에서 시작하여 for 루프 동안

ExcelData fline = null; 

:

처음 선이있다. 그러나 i=0 인 경우 fline에는 절대로 값이 지정되지 않습니다.

따라서 for 루프에서 i=0 일 때 fline.Designator == null을 확인하면 예외가 발생합니다. fline님께 서 ExcelData의 인스턴스를 지정하지 않았습니다. 즉, fline 자체는 null이며 속성 값이 없습니다.

나는 정확히 당신의 if (i > 0) 조건이 확인 무엇, 그러나 당신의 솔루션은 궁극적으로 하나 모르겠어요 :

  • 함으로써 일반 조건에 i=0 사건을 처리, if (i > 0)if (i >= 0)에 변경 또는 ..
  • i=0 경우 어느 시점에서 fline을 인스턴스화합니다. 처음에 변수를 선언 할 때 ExcelData fline = null; 대신 (루프 전에) ExcelData fline = new ExcelData();을 지정할 수 있습니다.
+0

i> 0을 'i> = 0'으로 변경하면 완벽하게 작동합니다 .. 감사합니다. –

1

귀하의 오류는 null 참조 예외입니다. 당신의 방법에서 당신은 flinenull로 초기화 :

ExcelData fline = null; 

그런 다음 당신이 for 루프를 입력하고 0 ( int i = 0)에서 반복 시작합니다. 또한 공조를 가지고 : 당신이 ExcelData 클래스의 인스턴스로 fline 변수를 초기화 if (i > 0) : 그러나

fline = new ExcelData(); 

참고이 i 인 경우 0

그래서 어떤 일이 단지에 대한 i 더 이상 발생하는 것을 0 - 루프를 처음 반복하는 경우입니다. 처음으로 반복 할 때 i0입니다.당신이 당신의 if 문 내부의 fline 초기화를 생략하고

if (fline.Designator == null) 

에 직접 계속 그래서 여기에 액세스 fline을 시도하지만이 초기화 된 적이 있어요. 따라서 null 참조 예외가 발생합니다.