You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按微软示例读取Excel,SharedString类型单元格获取不到SharedStringTablePart

问题:读取Excel共享字符串时SharedStringTablePart返回null

我参照微软官方示例读取Excel文件的单元格值,当检测到cell.DataType.Value == CellValues.SharedString时,调用相关方法获取SharedStringTablePart却返回null,相关代码如下:

if (cell.DataType is not null)
{
    if (cell.DataType.Value == CellValues.SharedString)
    {
        var stringTable = worksheetPart.GetPartsOfType<SharedStringTablePart>().FirstOrDefault();
        if (stringTable is not null)
        {}
        else
        {
            throw new Exception("null");
        }
}

解决方法

核心错误是找错了SharedStringTablePart的所属层级:SharedStringTablePart是WorkbookPart的子部件,并非WorksheetPart的下属,用worksheetPart去获取肯定拿不到结果。

修改代码里的获取逻辑,改成从WorkbookPart实例中获取:

// 先确保已从SpreadsheetDocument中正确获取WorkbookPart实例
var workbookPart = spreadsheetDocument.WorkbookPart;
var stringTable = workbookPart.GetPartsOfType<SharedStringTablePart>().FirstOrDefault();

额外注意:

  • 必须保证WorkbookPart实例不为null,否则要先排查文档加载的问题
  • 部分Excel文件可能未使用共享字符串(所有字符串直接存在单元格中),此时SharedStringTablePart确实会是null,建议不要直接抛异常,可兼容处理(比如直接取cell.CellValue.Text作为备选)

内容的提问来源于stack exchange,提问作者Karmeye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 02:47:35