コード例 #1
0
        public void GetFirstColumnMatchingIndex_NoSuchColumnName_ThrowsExcelMappingException(string columnName)
        {
            using var importer = Helpers.GetImporter("Primitives.xlsx");
            ExcelSheet   sheet   = importer.ReadSheet();
            ExcelHeading heading = sheet.ReadHeading();

            Assert.Throws <ExcelMappingException>(() => heading.GetFirstColumnMatchingIndex(e => e == columnName));
        }
コード例 #2
0
        public void GetColumnIndex_NullColumnName_ThrowsArgumentNullException()
        {
            using var importer = Helpers.GetImporter("Primitives.xlsx");
            ExcelSheet   sheet   = importer.ReadSheet();
            ExcelHeading heading = sheet.ReadHeading();

            Assert.Throws <ArgumentNullException>("key", () => heading.GetColumnIndex(null));
        }
コード例 #3
0
        public void GetColumnIndex_InvokeValidColumnName_ReturnsExpected()
        {
            using var importer = Helpers.GetImporter("Primitives.xlsx");
            ExcelSheet   sheet   = importer.ReadSheet();
            ExcelHeading heading = sheet.ReadHeading();

            Assert.Equal(1, heading.GetColumnIndex("StringValue"));
            Assert.Equal(1, heading.GetColumnIndex("stringvalue"));
        }
コード例 #4
0
        public void TryGetFirstColumnMatchingIndex_NoSuchColumnName_ReturnsFalse(string columnName)
        {
            using var importer = Helpers.GetImporter("Primitives.xlsx");
            ExcelSheet   sheet   = importer.ReadSheet();
            ExcelHeading heading = sheet.ReadHeading();

            Assert.False(heading.TryGetFirstColumnMatchingIndex(e => e == columnName, out int index));
            Assert.Equal(-1, index);
        }
コード例 #5
0
        public void AddData(MappingGroup group, MappingColumn column, string data, bool isBold = false)
        {
            ExcelData excelColumn = new ExcelData()
            {
                Group  = group,
                Column = column,
                Data   = data == null ? string.Empty : data
            };

            currentRow.Data.Add(excelColumn);

            // Add a heading if one doesn't arleady exist
            int dataCount    = currentRow.Data.Count(y => y.Column == column);
            int headingCount = headings.Count(y => y.Column == column);

            if (headingCount < dataCount)
            {
                int insertIndex = -1;

                if (group != null)
                {
                    var lastHeading = headings.LastOrDefault(y => y.Group == group);

                    if (lastHeading != null)
                    {
                        insertIndex = headings.LastIndexOf(lastHeading);
                    }

                    if (insertIndex < 0 && group.Parent != null)
                    {
                        lastHeading = headings.LastOrDefault(y => y.Group == group.Parent);

                        if (lastHeading != null)
                        {
                            insertIndex = headings.LastIndexOf(lastHeading);
                        }
                    }
                }

                ExcelHeading newHeading = new ExcelHeading()
                {
                    Group     = group,
                    Column    = column,
                    DataIndex = headingCount
                };

                if (insertIndex >= 0)
                {
                    headings.Insert(insertIndex + 1, newHeading);
                }
                else
                {
                    headings.Add(newHeading);
                }
            }
        }
コード例 #6
0
        public void ReadHeading_EmptyColumnName_ReturnsExpected()
        {
            using var importer = Helpers.GetImporter("EmptyColumns.xlsx");
            ExcelSheet   sheet   = importer.ReadSheet();
            ExcelHeading heading = sheet.ReadHeading();

            Assert.Same(heading, sheet.Heading);
            Assert.Equal(new string[] { "", "Column2", "", " Column4 " }, heading.ColumnNames);
            Assert.Equal(-1, sheet.CurrentRowIndex);
        }
コード例 #7
0
        public void ReadHeading_HasHeading_ReturnsExpected()
        {
            using var importer = Helpers.GetImporter("Primitives.xlsx");
            ExcelSheet   sheet   = importer.ReadSheet();
            ExcelHeading heading = sheet.ReadHeading();

            Assert.Same(heading, sheet.Heading);
            Assert.Equal(new string[] { "Int Value", "StringValue", "Bool Value", "Enum Value", "DateValue", "ArrayValue", "MappedValue", "TrimmedValue" }, heading.ColumnNames);
            Assert.Equal(-1, sheet.CurrentRowIndex);
        }
コード例 #8
0
        public void ReadHeading_NonZeroHeadingIndex_ReturnsExpected()
        {
            using var importer = Helpers.GetImporter("Non Zero Header Index.xlsx");
            ExcelSheet sheet = importer.ReadSheet();

            sheet.HeadingIndex = 3;

            ExcelHeading heading = sheet.ReadHeading();

            Assert.Same(heading, sheet.Heading);
            Assert.Equal(new string[] { "Value" }, heading.ColumnNames);
            Assert.Equal(-1, sheet.CurrentRowIndex);
        }
コード例 #9
0
        public void GetColumnName_GetColumnIndex_Roundtrips()
        {
            using var importer = Helpers.GetImporter("Primitives.xlsx");
            ExcelSheet   sheet   = importer.ReadSheet();
            ExcelHeading heading = sheet.ReadHeading();

            string[] columnNames = heading.ColumnNames.ToArray();
            for (int i = 0; i < columnNames.Length; i++)
            {
                Assert.Equal(i, heading.GetColumnIndex(columnNames[i]));
                Assert.Equal(columnNames[i], heading.GetColumnName(i));
            }
        }
コード例 #10
0
        public void GetColumnName_TryGetFirstColumnMatchingIndex_Roundtrips()
        {
            using var importer = Helpers.GetImporter("Primitives.xlsx");
            ExcelSheet   sheet   = importer.ReadSheet();
            ExcelHeading heading = sheet.ReadHeading();

            string[] columnNames = heading.ColumnNames.ToArray();
            for (int i = 0; i < columnNames.Length; i++)
            {
                Assert.True(heading.TryGetFirstColumnMatchingIndex(e => e == columnNames[i], out int index));
                Assert.Equal(i, index);
                Assert.Equal(columnNames[i], heading.GetColumnName(i));
            }
        }