[英]Read excel using npoi cell range address
我知道NPOI對於創建excel文件非常棒。 現在我想在特定專欄中閱讀excel。 這是我的excel格式:
D E F G H
3 Col1 Col2 Col3 Col4 Col5
4 a 1 1/1/2014
5 b 2 2/1/2014
6 c 3 3/1/2014
7 d 4 4/1/2014
8 e 5 5/1/2014
我只想獲得Col2,Col4和Col5中的數據。 它應該是這樣的:
Col2 Col4 Col5
a 1 1/1/2014
b 2 2/1/2014
c 3 3/1/2014
d 4 4/1/2014
e 5 5/1/2014
我必須做什么 ? 我可以使用范圍地址獲取特定列,然后獲取單元格值?
謝謝專家。
如果您有一個固定的工作表模板,實現所需的最簡單方法是循環遍歷行並檢索指定索引處的單元格值。
例如,基於OP的示例:
var sheet = workbook.GetSheetAt(0); // assuming 0 is the worksheet index
for (var i = 0; i <= sheet.LastRowNum; i++)
{
var row = sheet.GetRow(i);
if (row == null) continue;
// do your work here
Console.Write("{0}\t", row.GetCell(4));
Console.Write("{0}\t", row.GetCell(6));
Console.Write("{0}\t", row.GetCell(7));
Console.WriteLine();
}
但是如果你堅持使用范圍地址,你可以嘗試使用CellRangeAddress
類,如下所示:
var sheet = workbook.GetSheetAt(0);
var range = "E3:H8";
var cellRange = CellRangeAddress.ValueOf(range);
for (var i = cellRange.FirstRow; i <= cellRange.LastRow; i++)
{
var row = sheet.GetRow(i);
for (var j = cellRange.FirstColumn; j <= cellRange.LastColumn; j++)
{
// skip cell with column index 5 (column F)
if (j == 5) continue;
// do your work here
Console.Write("{0}\t", row.GetCell(j));
}
Console.WriteLine();
}
我知道這是一個老問題,但是使用NPOI讀取文件有一個非常簡單的解決方案。 希望這會對某人有所幫助。
請注意,如果您在excel中有公式,這將為您提供公式而不是值。
using NPOI.Extension;
創建一個類並設置列索引
public class DataItem
{
[Column(Index = 4)]
public string E_Column { get; set; }
[Column(Index = 6)]
public string G_Column { get; set; }
[Column(Index = 7)]
public string H_Column { get; set; }
}
現在為了閱讀文件,我建議用try-catch包裝它以防萬一
private List<DataItem> LoadExcelData()
{
// Load all the data from sheet 0, starting from row 4
List<DataItem> result = Excel.Load<DataItem>(@"C:\temp\test.xlsx", 4, 0).ToList();
return result;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.