2016-07-04 28 views
1

我一直在試圖有效地獲得行號。但是在數據被清除並且單元沒有被明確刪除的情況下它失敗了。獲取最新的數據填寫excel行號在C#

我想這是因爲「使用範圍」。

我所做的是使用EPPLUS

using (var excel = new ExcelPackage(hpf.InputStream)) 
{ 
    var ws = excel.Workbook.Worksheets["Sheet1"]; 

    if(ws.Dimension.End.Row > 2003) 
    { 
     var result = new JsonResult(); 
     result.Data = "FileLimitExceeded" ; 

但它給了我不正確的數據。如何有效地獲得最後的計數。

我發現像

var Lastrow = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row; 

但命名空間我無法理解。任何人都可以幫助我完成正確的答案嗎?

+1

參考http://stackoverflow.com/questions/7674573/programmatically-getting-the-last-filled-excel-row-using-c-sharp –

+0

@sowjanyaattaluri這就是要點。即使在那裏接受的答案也遭受了我所猜測的舊範圍收縮問題。 – StrugglingCoder

+0

Json與Excel或EPPlus有什麼關係?你使用的範圍在哪裏?因爲您發佈的代碼不會嘗試訪問任何單元格 –

回答

0

我前幾天來到這個senario,所以我做了什麼,我讀了數據並放入數據表中,然後過濾數據以顯示數據不爲空時的記錄。 你可以採用相同的方法。

+0

這應該是評論,而不是答案。此外,如果您可以將數據作爲DataTable讀取,則您已知道有效數據範圍 –

+0

我讀取的Tha數據包含空白行,因此可以消除沒有數據的重複行。這完全有道理。 –

+0

不完全。如果指定一個範圍,Excel將返回單元格,不管它們是否有數據。您*不需要將此範圍加載到DataTable中以查找實際包含數據的行。對單元的LINQ查詢將完成相同的工作。最簡單的選擇是在生成文件時創建命名的範圍/表格,然後按名稱訪問它們 –