Ich lese Daten von Excel zu datierbar mit EPPlus.Wie kann ich die tatsächlich verwendete Reichweite für modifizierte Excel mit Epplus nutzen?
Nachdem ich ein Excel-Blatt mit 10 Datensatzzeilen gelesen hatte, änderte ich die Excel-Tabelle, indem ich vorhandene Daten löschte und Daten für nur eine Zeile behielt. Aber wenn ich das modifizierte Excel lese liest es immer noch 10 Zeilen (1 mit Wert und bleibt als Nullfelder) in Datentabelle.
Wie kann dies begrenzt werden? Ich verwende folgenden Code zum Lesen von 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();
}
Als ich Interop Excel Excel zu lesen, wurde gleiches Problem überwunden durch clearformat()
Verfahren wie
ws.Columns.ClearFormats();
xlColCount = ws.UsedRange.Columns.Count;
Gibt es eine Entsprechung für diesen in Epplus Open XML? Wie kann ich den tatsächlich verwendeten Bereich für modifizierte Excel-Werte erhalten?
Wie entfernen Sie die Daten? – Ernie
Dimension scheint in allen meinen Tests den richtigen Bereich zu liefern. Auch nach dem Löschen von Zeilen und dem erneuten Importieren. Ist Dimension nach dem Löschen in Ihrer Situation 10 Zeilen? –
@PhilipBijker, @ Ernie: Ich wähle alle Zellen aus, die entfernt werden müssen, und lösche die Taste, nicht ganze Zeile – Athul