Я читаю данные от 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()
метод, подобный
ws.Columns.ClearFormats();
xlColCount = ws.UsedRange.Columns.Count;
Есть ли какой-либо эквивалент для этого в раскрывающемся xml? Как я могу получить фактический диапазон использования для модифицированных улучшений?