Как я могу получить фактический диапазон использования для модифицированных улучшений с помощью Epplus?

Я читаю данные от excel до datable с использованием EPPlus.

После чтения листа excel с 10 строками записи я модифицировал лист excel, удалив существующие данные и сохранил данные только для одной строки. Но когда я читаю модифицированное excel, он все еще считывает 10 строк (1 со значением и остается как нулевые поля) в таблицу данных.

Как это можно ограничить? Я использую следующий код для чтения Excel.

using (var pck = new OfficeOpenXml.ExcelPackage()) { using (var stream = File.OpenRead(FilePath)) { pck.Load(stream); } var ws = pck.Workbook.Worksheets.First(); bool hasHeader = true; // adjust it accordingly(this is a simple approach) foreach (var firstRowCell in ws.Cells[1, 1, 1, ws.Dimension.End.Column]) { DSClientTransmittal.Tables[0].Columns.Add(hasHeader ? firstRowCell.Text : string.Format("Column {0}", firstRowCell.Start.Column)); } var startRow = hasHeader ? 2 : 1; for (var rowNum = startRow; rowNum <= ws.Dimension.End.Row; rowNum++) { //var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column]; var wsRow = ws.Cells[rowNum, 1, rowNum, DSClientTransmittal.Tables[0].Columns.Count]; var row = DSClientTransmittal.Tables[0].NewRow(); foreach (var cell in wsRow) { try { object cellValue = cell.Value; //row[cell.Start.Column - 1] = cell.Text; row[cell.Start.Column - 1] = cellValue.ToString().Trim(); //cell.Style.Numberformat.Format = "@"; //row[cell.Start.Column - 1] = cell.Text; } catch (Exception ex) { } } DSClientTransmittal.Tables[0].Rows.Add(row); } pck.Dispose(); } 

Когда я использовал Interop excel для чтения excel, clearformat() же проблема была преодолена методом clearformat() например

 ws.Columns.ClearFormats(); xlColCount = ws.UsedRange.Columns.Count; 

Есть ли какой-либо эквивалент для этого в раскрывающемся XML-файле Epplus? Как я могу получить фактический диапазон использования для модифицированных улучшений?

Нет встроенного способа указать, что строка не должна учитываться при удалении данных только в некоторых ячейках.

Dimension как можно ближе, но строки включены в Dimension если какой-либо столбец содержит данные или если какая-либо строка выше или ниже содержит данные.

Однако вы можете попытаться выяснить, следует ли пропустить строку в цикле for. Например, если вы всегда удаляете данные только в первых 4 столбцах, вы можете попробовать:

 if(!ws.Cells[rowNum, 1, rowNum, 4].All(c => c.Value == null)) { //Continue adding the row to the table } 

Описание не указывает критерии для пропусков строки, но вы получаете идею.

Для начала я не программист на C #, но я думаю, что у меня есть решение, которое работает с использованием сценария Excel VBA. Вы можете запустить этот код Excel VBA с помощью C или получить представление о том, как сделать то же самое с C +.

Проблема, с которой вы сталкиваетесь, связана с тем, как Excel обрабатывает рабочий размер рабочего листа. Если вы вводите данные в 1-миллионную строку и затем удаляете эту ячейку, Excel по-прежнему показывает рабочий лист как имеющий 1 миллион строк.

Я проверил этот код Excel VBA и успешно удалил все строки, которые были полностью пустыми, а затем сбросил размер листа.

 Sub DelEmptyRowsResizeWorksheet() Dim i As Long, iLimit As Long iLimit = ActiveSheet.UsedRange.Rows.Count For i = iLimit To 1 Step -1 If Application.CountA(Cells(i, 1).EntireRow) = 0 Then Cells(i, 1).EntireRow.Delete End If Next i iLimit = ActiveSheet.UsedRange.Rows.Count ' resize the worksheet based on the last row with data End Sub 

Чтобы сделать это вручную без скрипта, сначала удалите все пустые строки внизу (или столбцы с правой стороны) рабочего листа, сохраните его, затем закройте и снова откройте книгу. Я обнаружил, что это также сбрасывает размер книги Excel.

  • Open XML SDK v2.0 Проблема с производительностью при удалении первой строки в 20 000 + строк файла Excel
  • Пользовательская ширина столбца в OpenXML и MS Excel
  • Получение x / y позиции XSSFChart (графика xlsx) с помощью Apache POI
  • Открыть листы с открытым текстом справа налево
  • Openxml вставить изображение и разместить его
  • Создание круговой диаграммы в Excel с использованием OpenXml
  • Нужен плагин excel, чтобы увидеть основной openxml
  • Существует ли хороший класс-оболочка и / или библиотека для открытого редактирования XML-документов Excel?
  • OpenXml: определение изображения в ячейке в Excel
  • Невозможно установить желаемый цвет фона в excel с помощью openxml
  • Ошибка Excel Open XML: «найти нечитаемый контент» при создании простого примера
  • Давайте будем гением компьютера.