C# 如何使用NPOI按地址(A1,A2)获取Excel单元格值

C# 如何使用NPOI按地址(A1,A2)获取Excel单元格值,c#,npoi,C#,Npoi,我有一个Excel单元格地址,如A1、A2。如何使用C#中的NPOI框架以编程方式访问此单元格 我发现的一些Java POI示例代码: CellReference cr = new CellReference("A1"); row = mySheet.getRow(cr.getRow()); cell = row.getCell(cr.getCol()); 您找到的Java代码将1:1转换为C#: 首先,将单元格描述(A1)转换为CellReference 使用该单元格引用中的行和列,查

我有一个Excel单元格地址,如A1、A2。如何使用C#中的NPOI框架以编程方式访问此单元格

我发现的一些Java POI示例代码:

CellReference cr = new CellReference("A1"); 
row = mySheet.getRow(cr.getRow()); 
cell = row.getCell(cr.getCol());

您找到的Java代码将1:1转换为C#:

  • 首先,将单元格描述(A1)转换为
    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不会试图向开发人员隐藏这一事实。

以下是一些示例代码,可以帮助您获取任何值

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;
}

我等了很久才从高级开发人员那里得到一个最优的解决方案,他们中没有一个试图帮助我。所以我试着自己找到一个解决方案..感谢宝贵的支持社区。CellReference cr=new CellReference(cell);row=cr.row col=cr.col谢谢,这非常有帮助-尽管它对数据类型而不是var更有帮助。不要忘记使用
语句添加所有这些
,例如
使用NPOI.SS.Util以供参考等。