PX.Data.XLSXReader不读取第一行

时间:2019-07-15 15:23:55

标签: acumatica

我正在使用XLSXReader读取Excel文件,但是无法读取第一行。我需要读取第一行,因为它包含数据而不包含标题。

使用测试数据,我在空白处添加了第一行,但仍跳过了第一行的数据:

enter image description here

我复制了第一行并复制了它,它读取了该行:

enter image description here

我不知道为什么它会自动跳过第一行。

这是导入文件,保存并读取文件的操作按钮代码:

    public PXAction<PMProject> importCostBudget;
    [PXButton(CommitChanges = true)]
    [PXUIField(DisplayName = "Import Cost Budget")]
    protected void ImportCostBudget()
    {
        if (ImportCostBudgetView.AskExt() == WebDialogResult.OK)
        {
            const string PanelSessionKey = "ImportCostBudget";
            PX.SM.FileInfo info = (PX.SM.FileInfo)PX.Common.PXContext.SessionTyped<PXSessionStatePXData>().FileInfo[PanelSessionKey];
            Byte[] bytes = info.BinData;
            System.Web.HttpContext.Current.Session.Remove(PanelSessionKey);

            if (info != null)
            {
                PXNoteAttribute.AttachFile(Base.Project.Cache, Base.Project.Current, info);                 

                using (PX.Data.XLSXReader reader = new XLSXReader(bytes))
                {
                    //List<PMCostBudget> costBudgets = new List<PMCostBudget>();
                    reader.Reset();

                    //This is to read the first row
                    RowRead(reader);

                    while (reader.MoveNext())
                    {
                        RowRead(reader);
                    }
                }
            }
        }
    }

有没有办法强制使用阅读器读取第一行?

1 个答案:

答案 0 :(得分:1)

标题行很可能被视为用于读取列名的特殊情况。

您应该能够从XLSXReader IndexKeyPairs集合访问它:

public IDictionary<int, string> IndexKeyPairs
{
    get { return _header; }
}