私はEPPlusを使用してdatableするために、Excelからデータを読んでいます。Epplusを使用して修正されたExcelの実際の使用範囲を取得するにはどうすればよいですか?
10行のレコードでExcelシートを読み取った後、既存のデータを削除してExcelシートを修正し、1行だけのデータを保持しました。 しかし、私は修飾を読んでいるが、まだデータテーブルに10行(値と残りとしてヌルフィールドを持つ1)を読み出す優れ。これを制限することができますどのように
? 私はExcelを読むために次のコードを使用しています。 EpplusオープンXMLで、このための任意の等価は、私はExcelを読み取るために相互運用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();
}
、同じ問題が
ws.Columns.ClearFormats();
xlColCount = ws.UsedRange.Columns.Count;
よう clearformat()
方法で克服してありますか? 変更されたExcelの実際の使用範囲を取得するにはどうすればよいですか?
どのようにデータを削除していますか? – Ernie
寸法はすべてのテストで正しい範囲を返すようです。行を削除して再インポートした後でも。削除後、状況によって寸法が10行表示されますか? –
@PhilipBijker、@ Ernie:削除する必要があるすべてのセルを選択し、行全体ではなく削除キーを押す – Athul