我正在使用 EPPlus 将数据从 excel 读取到数据表中。
在读取了 10 行记录的 excel 表后,我通过删除现有数据来修改 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;
Epplus open xml中是否有任何等价物?如何获得修改后的 Excel 的实际使用范围?