我正在使用Excel的COM接口,我想获取单元格的格式化文本表示,而不是真实的底层值。
例如,假设单元格包含数字1.23456,并且用户已指定带有1个小数位的数字格式。那么我想能够读取字符串"1.2"。我知道我可以使用Range.Text,但这种方法有几个重要的缺点。Range.Text返回用户在工作表视图中看到的内容,因此如果单元格被隐藏,则返回空字符串。如果单元格宽度很低,则返回截断的字符串。Range.Text还存在一个问题,即它仅限于1024个字符。
另一个用例是当单元格计算出错时,例如#DIV/0!、#NAME?、#REF!等。我知道我可以读取Range.Value并测试变量是否为varError类型(我正在使用Delphi,在VBA中它将是vbError)。我无法弄清楚如何获得文本表示形式#DIV/0!等。同样,如果单元格被隐藏或太窄,则无法使用Range.Text返回此类信息。
编辑
我认为Range.Text的限制实际上是255个字符。
例如,假设单元格包含数字1.23456,并且用户已指定带有1个小数位的数字格式。那么我想能够读取字符串"1.2"。我知道我可以使用Range.Text,但这种方法有几个重要的缺点。Range.Text返回用户在工作表视图中看到的内容,因此如果单元格被隐藏,则返回空字符串。如果单元格宽度很低,则返回截断的字符串。Range.Text还存在一个问题,即它仅限于1024个字符。
另一个用例是当单元格计算出错时,例如#DIV/0!、#NAME?、#REF!等。我知道我可以读取Range.Value并测试变量是否为varError类型(我正在使用Delphi,在VBA中它将是vbError)。我无法弄清楚如何获得文本表示形式#DIV/0!等。同样,如果单元格被隐藏或太窄,则无法使用Range.Text返回此类信息。
编辑
我认为Range.Text的限制实际上是255个字符。