使用Apache POI,我能够找到一个名为范围:
XSSFName[] ranges = new XSSFName[workbook.getNumberOfNames()];
for (int i = 0; i < _wb.getNumberOfNames(); i++)
ranges[i] = workbook.getNameAt(i);
就这样,我能细胞的AreaReference:
AreaReference area = new AreaReference(ranges[0].getRefersToFormula());
然后我终于可以得到该范围内的所有单元格:
CellReference[] cells = area.getAllReferencedCells();
这一切都工作得很好。 伯特我有,我必须重新定义该范围覆盖区的使用情况。 有没有办法做到这一点? 我注意到range.getRefersToFormula()
方法返回一个字符串,像MySheet!$A$1:$B$8
。 有一个range.setRefersToFormula(String formula)
,但我必须相信有比诉诸写我自己的Excel范围公式解析器其他的方式。 难道就没有办法来产生一组到AreaReference Cell
的更多的东西类型安全的参考? 我是不是真的要生成一个String
来表示新的范围是多少? 我想会有API的地方,以帮助我,但我似乎无法找到它。
更新
我发现了一些API,但它似乎没有工作时,至少它不正确保存。 这里就是我所做的。
AreaReference newArea = new AreaReference(firstCell, lastCell);
ranges[0].setRefersToFormula(newArea.formatAsString())
它似乎正确地设置公式,但是当我流的工作簿回到磁盘,范围是完全错误的。