Sto leggendo i dati da excel a datable usando EPPlus.Come posso ottenere l'attuale intervallo utilizzato per gli eccelli modificati utilizzando Epplus?
Dopo aver letto un foglio Excel con 10 righe di record, ho modificato il foglio excel rimuovendo i dati esistenti e conservando i dati per una sola riga. Ma quando sto leggendo l'Excel modificato, legge ancora 10 righe (1 con valore e restano come campi null) nella tabella dati.
Come limitare questo? Sto usando il seguente codice per leggere 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();
}
Quando stavo usando interoperabilità di Excel leggere Excel, lo stesso problema è stato superato da clearformat()
metodo come
ws.Columns.ClearFormats();
xlColCount = ws.UsedRange.Columns.Count;
Esiste un equivalente per questo nel Epplus Open XML? Come posso ottenere l'attuale intervallo usato per gli eccelsi modificati?
Come si rimuovono i dati? – Ernie
La dimensione sembra restituire l'intervallo corretto in tutti i miei test. Anche dopo l'eliminazione di righe e la reimportazione. La dimensione indica 10 righe nella tua situazione dopo l'eliminazione? –
@PhilipBijker, @ Ernie: seleziono tutte le celle che hanno richiesto di rimuovere e premuto il tasto di cancellazione, non l'intera riga – Athul