代码之家  ›  专栏  ›  技术社区  ›  EricP.

CSVReader正在跳过第一行

  •  0
  • EricP.  · 技术社区  · 6 年前

    我正在使用CSVReader对象,但它跳过了第一行。有什么方法可以防止这种情况发生吗?

    我的代码:

    if (UploadFile.AskExt() == WebDialogResult.OK)
    {
        StringBuilder filetext = new StringBuilder();
    
    
        PX.SM.FileInfo info = PXContext.SessionTyped<PXSessionStatePXData>().FileInfo["MyFileImportSessionKey"] as PX.SM.FileInfo;
    
        Byte[] bytes = info.BinData;
    
        using (CSVReader reader = new CSVReader(bytes, Encoding.ASCII.CodePage))
        {
            reader.Reset();
            filetext.Append("FIRST:" + reader.GetValue(0) + " DONE" + Environment.NewLine);
    
            while (reader.MoveNext())
            {
                for (int i = 0; i < reader.IndexKeyPairs.Count; i++)
                {
                    filetext.Append(reader.GetValue(i));
                }
                filetext.Append(Environment.NewLine);
            }
            System.Web.HttpContext.Current.Session.Remove("MyFileImportSessionKey");
        }
    
        CurrentDocument.Ask(filetext.ToString(), MessageButtons.OK);
    }
    

    这始终显示第一行之后的所有行。我知道通常第一行是标题,希望被忽略,但在我的情况下,我需要文件中的所有行。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Hugues Beauséjour    6 年前

    标题绝对是作为特例处理的。

    我相信它已经在IndexKeyPairs公共集合中公开了。

    foreach (KeyValuePair<int, string> headerColumn in reader.IndexKeyPairs)
    {
       int headerColumIndex = headerColumn.Key;
       string headerColumnCellValue = headerColumn.Value;
    }