尝试查找应用于文本的字体时,NPOI API调用中的空引用

时间:2014-12-12 15:55:41

标签: c# excel npoi xssf

我有这个样本:

IRichTextString richText = cell.RichStringCellValue;
for (int index = 0; index < richText.String.Length; index++)
{
    short fontId = richText.GetFontAtIndex(index);
    ...
}

第一次调用GetFontAtIndex(index = 0)时,我得到对象引用没有设置为对象的实例

  

at NPOI.XSSF.UserModel.XSSFRichTextString.ToCTFont(CT_RPrElt pr)at at   NPOI.XSSF.UserModel.XSSFRichTextString.GetFontOfFormattingRun(的Int32   指数)

该文件具有xlsx扩展名。对于xls,此代码可以正常工作。

也试过这个,没有运气:

for (int i = 0; i < richText.NumFormattingRuns; i++)
{
    int startIdx = richText.GetIndexOfFormattingRun(i);
    int length = richText.GetLengthOfFormattingRun(i);
    IFont font = richText.GetFontOfFormattingRun(i);
    ...
}

应该在哪里出问题?对于xlsx文件,无法获取文本的字体吗?

修改

该文件由以下内容读取:

IWorkbook iw = WorkbookFactory.Create(new FileStream(excelFilePath, FileMode.Open, FileAccess.Read));
ISheet sheet = iw.GetSheet(sheetName);
for (int j = rowStart; j <= sheet.LastRowNum; j++)
{
    IRow row = sheet.GetRow(j);
    if (row != null)
    {
        for (int i = row.FirstCellNum; i < row.LastCellNum; i++)
        {
            ICell cell = row.GetCell(i);
...

但是单元格对象有很多错误: enter image description here

我是否必须提供一些参考资料?目前我已经包括:

using NPOI.HSSF.Model;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;
using NPOI.XSSF.Model;
using NPOI.XSSF.Util;

0 个答案:

没有答案