我有一个Excel单元格地址,如A1,A2。如何使用C#中的NPOI框架以编程方式访问此单元?
我发现了一些Java POI示例代码:
CellReference cr = new CellReference("A1");
row = mySheet.getRow(cr.getRow());
cell = row.getCell(cr.getCol());
答案 0 :(得分:7)
您找到的Java代码将1:1转换为C#:
CellReference
Row
和Col
来查找实际的单元格。以下是一些示例代码
var workbook = new XSSFWorkbook(stream);
var sheet = workbook.GetSheetAt(0);
var cr = new CellReference("D5");
var row = sheet.GetRow(cr.Row);
var cell = row.GetCell(cr.Col);
Console.Write(cell.StringCellValue);
请注意,引用空单元格会导致异常。 Excel不会在内部存储未使用的单元格,并且(N)POI不会尝试向开发人员隐藏这一事实。
答案 1 :(得分:1)
下面是一些示例代码,可帮助您获得任何价值。
var workbook = new XSSFWorkbook(stream);
var sheet = workbook.GetSheetAt(0);
var cr = new CellReference("D5");
var row = sheet.GetRow(cr.Row);
var cell = row.GetCell(cr.Col);
var val = getCellValue(cell);
private object getCellValue(ICell cell)
{
object cValue = string.Empty;
switch (cell.CellType)
{
case (CellType.Unknown | CellType.Formula | CellType.Blank):
cValue = cell.ToString();
break;
case CellType.Numeric:
cValue = cell.NumericCellValue;
break;
case CellType.String:
cValue = cell.StringCellValue;
break;
case CellType.Boolean:
cValue = cell.BooleanCellValue;
break;
case CellType.Error:
cValue = cell.ErrorCellValue;
break;
default:
cValue = string.Empty;
break;
}
return cValue;
}