我有一个像A1,A2这样的Excel单元格地址。如何使用C#中的NPOI框架以编程方式访问此单元?
我找到了一些Java POI示例代码:
CellReference cr = new CellReference("A1");
row = mySheet.getRow(cr.getRow());
cell = row.getCell(cr.getCol());
发布于 2016-06-21 07:33:27
您找到的Java代码将1:1转换为C#:
首先,将单元格描述(A1)转换为CellReference
Col
和CellReference,以查找实际的单元格。下面是一些示例代码
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不会试图对开发人员隐藏这一事实。
发布于 2020-05-03 15:20:24
下面是一些示例代码,可以帮助您获取任何值。
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;
}
https://stackoverflow.com/questions/37608477
复制