我的excel输出不是我想要的

Helle家伙,

我正在尝试创build一个自定义的Excel输出。 但是我的事情是它不给我输出。 一旦代码达到if (fline.Designator == null)它显示我一个错误..请看看我的问题,并给我一个解决scheme。

代码: –

  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(); } 

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

最初有一条线:

 ExcelData fline = null; 

for循环中,从int i=0开始,你有一个if (i > 0)在该条件内为fline赋值。 但是,对于i=0的情况, fline永远不会被赋值。

因此,当您在for循环中检查fline.Designator == null时,如果i=0 ,则会引发exception。 例外是告诉你fline还没有被分配一个ExcelData的实例。 换句话说, fline本身是空的:它没有任何属性值。

我不确定你的if (i > 0)条件在检查什么,但是你的解决scheme最终是:

  • if (i > 0)if (i >= 0) ,从而在常规条件下处理i=0情况,或者…
  • i=0情况下实例化某些点的fline 。 您可以在最初声明variables时执行此操作: ExcelData fline = new ExcelData(); 而不是ExcelData fline = null; (在你的循环之前)。

我的猜测是你的错误是一个空引用exception。 在你的方法中,你用null初始化fline

 ExcelData fline = null; 

然后你进入一个for循环,你开始从0( int i = 0 )迭代。 你也有一个条件: if (i > 0)你用ExcelData类的一个实例初始化flinevariables:

 fline = new ExcelData(); 

但请注意,这只发生在i大于0的情况。

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

 if (fline.Designator == null) 

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