Объединенные ячейки не пропускаются в листе Excel - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь загрузить данные из листа Excel, в котором есть несколько объединенных ячеек.

Это код, о котором идет речь.

            Using excel = New ExcelPackage(ulExcelData.PostedFile.InputStream)
                Dim _worksheet = excel.Workbook.Worksheets.First()
                Dim _hasHeader = False
                Dim _mergedAddress = _worksheet.MergedCells(13, 7)
                Dim mergedadress = _worksheet.MergedCells(1, 2)

                For Each col In _worksheet.Cells(13, 7, _worksheet.Dimension.End.Row, 10)

                    _dataTable.Columns.Add(If(_hasHeader, Nothing, col.Value))
                    String.Format("{0}", col.Start.Column)
                Next


                For _rowNumber = 1 To _worksheet.Dimension.End.Row
                    Dim _worksheetRow = _worksheet.Cells(_rowNumber, 13, _rowNumber, 10)
                    Dim _row As DataRow = _dataTable.Rows.Add()

                    For Each cell In _worksheetRow
                        If cell.Value Is Nothing Then
                            _row.Delete()
                            GoTo executeInsert
                        End If
                    Next cell
                Next

Я попробовал это: Получите объединенную ячейку с EPPLus , но не повезло.

Столбцы, которые я хочу прочитать, имеют значения от «F» до «J», но «G», «H» и «I» объединены, поэтому здесь я хочу значение, которое находится в «G», и я хочу игнорировать » H "и" I ".

Есть идеи?

Я буду рад добавить любые разъяснения.

UPDATE

Все данные сохраняются как обычно, кроме столбца J. Я нажимаю «H» и сохраняю нулевые значения в своей базе данных, так как «H» и «I» - пустые ячейки.

ОБНОВЛЕННЫЙ КОД

                        For _rowNumber = 13 To _worksheet.Dimension.End.Row
                            Dim _worksheetRow = _worksheet.Cells(_rowNumber, 6, _rowNumber, 9) 'Cols F, G, H, I'
                            Dim _row As DataRow = _dataTable.Rows.Add()

                            For Each cell In _worksheetRow
                                If cell.Value Is Nothing Then
                                    Continue For
                                Else
                                    _row(cell.Start.Column - 6) = cell.Value.ToString.Trim()
                                End If
                            Next cell
                        Next

Я получаю значения из «G», но я не могу «пропустить» «H» и «I», чтобы перейти прямо к «J» и получить значение. Так что в основном из столбцов с 6 по 10 я хочу пропустить 8 и 9 и перейти прямо к 10.

1 Ответ

0 голосов
/ 13 сентября 2018

Наконец, не было необходимости пытаться «что-нибудь пропустить».Я удалил лишние два столбца, которые были объединены вместе с «G», так как они не содержали никаких значений и все работало нормально.Я просто добавил эту строку в свой код.

_worksheet.DeleteColumn(8, 2)

Финальная часть кода

Using excel = New ExcelPackage(ulExcelData.PostedFile.InputStream)
                        Dim _worksheet = excel.Workbook.Worksheets.First()
                        Dim _hasHeader As Boolean = False

                        _worksheet.DeleteColumn(8, 2)

                        For Each col In _worksheet.Cells("F13:J13")
                            If col.Value IsNot Nothing Then
                                _dataTable.Columns.Add()
                                String.Format("{0}", col.Start.Column)
                            Else
                                Continue For
                            End If
                        Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...