[]
        
首页
开发者学堂
文档
论坛
市场
生态机会
活动
立即试用
(Showing Draft Content)

CalcReference

Class CalcReference

java.lang.Object
com.grapecity.documents.excel.CalcReference

public class CalcReference extends Object
表示电子表格中的一个区域。

CalcReference 封装一个或多个作为计算引用使用的工作表范围。可以使用此类检查引用是否跨越多个区域、是否引用其他工作簿或是否表示 3D 引用,并检索所引用的 IRange 对象或其值。


 CustomFunction function = new CustomFunction(
     "REFVALUES",
     FunctionValueType.Object,
     new Parameter[] { new Parameter(FunctionValueType.Object, true, false) }) {
         public Object evaluate(Object[] arguments, ICalcContext context) {
             CalcReference reference = (CalcReference) arguments[0];
             return reference.getValues();
         }
 };
 Workbook.AddCustomFunction(function);
 worksheet.getRange("A1:B2").setValue(new Object[][] {{1, 2}, {3, 4}});
 worksheet.getRange("C1").setFormula2("=REFVALUES(A1:B2)");
 Object result = worksheet.getRange("C1").getValue();
 
  • Constructor Details

    • CalcReference

      public CalcReference()
  • Method Details

    • getRangeCount

      public final int getRangeCount()
      获取当前区域中的范围数量。
      
       CustomFunction function = new CustomFunction(
           "REFRANGECOUNT",
           FunctionValueType.Number,
           new Parameter[] { new Parameter(FunctionValueType.Object, true, false) }) {
               public Object evaluate(Object[] arguments, ICalcContext context) {
                   CalcReference reference = (CalcReference) arguments[0];
                   return reference.getRangeCount();
               }
       };
       Workbook.AddCustomFunction(function);
       worksheet.getRange("A1:B2").setValue(new Object[][] {{1, 2}, {3, 4}});
       worksheet.getRange("C1").setFormula("=REFRANGECOUNT(A1:B2)");
       Object rangeCount = worksheet.getRange("C1").getValue();
       
      Returns:
      范围数量。
    • getIsExternalReference

      public final boolean getIsExternalReference()
      获取引用是否位于其他工作簿中。
      
       CustomFunction function = new CustomFunction(
           "ISEXTERNALREF",
           FunctionValueType.Boolean,
           new Parameter[] { new Parameter(FunctionValueType.Object, true, false) }) {
               public Object evaluate(Object[] arguments, ICalcContext context) {
                   CalcReference reference = (CalcReference) arguments[0];
                   return reference.getIsExternalReference();
               }
       };
       Workbook.AddCustomFunction(function);
       worksheet.getRange("A1:B2").setValue(new Object[][] {{1, 2}, {3, 4}});
       worksheet.getRange("C1").setFormula("=ISEXTERNALREF(A1:B2)");
       Object external = worksheet.getRange("C1").getValue();
       
      Returns:
      如果引用是外部引用,则为 true;否则为 false。
    • getIs3DReference

      public final boolean getIs3DReference()
      获取引用是否为 3D 引用。
      
       CustomFunction function = new CustomFunction(
           "IS3DREF",
           FunctionValueType.Boolean,
           new Parameter[] { new Parameter(FunctionValueType.Object, true, false) }) {
               public Object evaluate(Object[] arguments, ICalcContext context) {
                   CalcReference reference = (CalcReference) arguments[0];
                   return reference.getIs3DReference();
               }
       };
       Workbook.AddCustomFunction(function);
       worksheet.getRange("A1:B2").setValue(new Object[][] {{1, 2}, {3, 4}});
       worksheet.getRange("C1").setFormula("=IS3DREF(A1:B2)");
       Object is3D = worksheet.getRange("C1").getValue();
       
      Returns:
      如果引用是 3D 引用,则为 true;否则为 false。
    • getRanges

      public final List<IRange> getRanges()
      获取所有引用的范围。
      
       CustomFunction function = new CustomFunction(
           "REFRANGES",
           FunctionValueType.Number,
           new Parameter[] { new Parameter(FunctionValueType.Object, true, false) }) {
               public Object evaluate(Object[] arguments, ICalcContext context) {
                   CalcReference reference = (CalcReference) arguments[0];
                   return reference.getRanges().size();
               }
       };
       Workbook.AddCustomFunction(function);
       worksheet.getRange("A1:B2").setValue(new Object[][] {{1, 2}, {3, 4}});
       worksheet.getRange("C1").setFormula("=REFRANGES(A1:B2)");
       Object rangeCount = worksheet.getRange("C1").getValue();
       
      Returns:
      范围集合。
    • getValues

      public final Object getValues()
      获取此引用中所有范围的值。

      在自定义函数求值逻辑中使用此方法,可获取 CalcReference 参数所表示的值。

      
       CustomFunction function = new CustomFunction(
           "REFVALUES",
           FunctionValueType.Object,
           new Parameter[] { new Parameter(FunctionValueType.Object, true, false) }) {
               public Object evaluate(Object[] arguments, ICalcContext context) {
                   CalcReference reference = (CalcReference) arguments[0];
                   return reference.getValues();
               }
       };
       Workbook.AddCustomFunction(function);
       worksheet.getRange("A1:B2").setValue(new Object[][] {{1, 2}, {3, 4}});
       worksheet.getRange("C1").setFormula2("=REFVALUES(A1:B2)");
       Object result = worksheet.getRange("C1").getValue();
       
      Returns:
      一个包含所有引用范围值的对象。