2014-11-07 47 views
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 2014-11-07 03:16:13

+0

@grovesNL https://imageshack.com/i/f0tIFW6Dj请给我一个错误 – 2014-11-07 03:17:50

回答

1

看着你for循环,fline永远不会初始化。

最初,有一行:

ExcelData fline = null; 

在你for循环,在int i=0开始你有一个if (i > 0)是该条件中值分配给fline。但是,对于i=0,fline从未分配值的情况。

因此,如果您在for循环中检查i=0是否为fline.Designator == null,则会引发异常。例外情况是告诉您fline尚未分配ExcelData的实例。换句话说,fline本身就是空的:它没有任何属性值。

我不知道究竟什么if (i > 0)条件检查,但您的解决方案是最终之一:

  • 更改if (i > 0)if (i >= 0),从而处理i=0情况下,您的常规条件,或..
  • 实例化flinei=0案件的某个点。当您最初声明变量时,您可以这样做:ExcelData fline = new ExcelData();而不是ExcelData fline = null;(在循环之前)。
+0

当我将i> 0更改为'i> = 0'时,它完美运行..非常感谢。 – 2014-11-07 03:31:55

1

我的猜测是你的错误是一个空引用异常。 在你的方法,你初始化flinenull

ExcelData fline = null; 

然后你进入一个for循环,你开始从0(int i = 0)迭代。 你也有一个conditio:if (i > 0)在那里你ExcelData类的实例初始化变量fline:但是

fline = new ExcelData(); 

注意,这种情况只为i大于当i为0

会发生什么0 - 在循环的第一次迭代中就是这种情况。 当你第一次迭代i时是0。所以,你跳过fline初始化你if语句中,你直接继续

if (fline.Designator == null) 

在这里,您尝试访问fline但它从来没有被初始化。所以你得到空引用异常。

相关问题