我的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
类的一个实例初始化fline
variables:
fline = new ExcelData();
但请注意,这只发生在i
大于0的情况。
那么当i
是0
时会发生什么 – 在循环的第一次迭代中就是这种情况。 当你第一次迭代i
是0
。 所以你跳过你的if
语句中的fline
初始化,然后直接继续
if (fline.Designator == null)
在这里你尝试访问fline
但它从来没有被初始化。 所以你得到空引用exception。