2016-04-24 161 views
2

我正在使用EPPlus .NET库(v4.0.4)来解释已保存的Excel工作簿。在一个这样的工作表中,使用Excel'撇号'技巧(即用户在这些单元格中输入单撇号,以便Excel将它们显示为空白)将一些空单元格设置为“文本”格式。EPPlus可以区分Excel工作表中的空白单元格和空白文本单元格吗?

示例XML为两个这样的细胞如下:

<c r="F6" s="1" t="inlineStr"> 
    <is> 
     <t /> 
    </is> 
    </c> 
    <c r="G6" s="1" /> 

这里,F6有一个撇号(即是一个空的文本小区)和G6是真正空白。

是否可以使用EPPlus读取此'内联字符串'(inlineStr)属性或以其他方式区分这两个单元格? ExcelRange/ExcelRangeBase类具有如Value,Formula,Style等属性,但在检查代表上述两个单元格的对象时,我看不到它们之间的任何差异。

我知道我可以通过阅读原始XML或通过使用替代库(可能是ClosedXML或类似的)手动执行此操作,但如果可能,我想使用EPPlus执行此操作。

回答

2

EPPlus使用null值表示空单元格,并为包含空字符串的单元格返回空字符串。

这适用于读写操作。

因此,如果你使用epplus将空字符串写入单元格,那么该单元格将包含一个空字符串(因此将显示为空白但不会等于0),而如果使用epplus将单元格的值设置为null,在excel中为空(并且仍将显示为空白,但将等于0)

这同样适用于读取操作。如果您使用了'撇号技巧',您可以从单元格的值中读取空字符串,但会为空单元格的值获取空引用。

+0

谢谢@Stewart_R,不知道我是如何错过的。 –