我是 activePivot 的新手。我们调用了一个 mdx 查询并返回了一个 CellSetDTO。是否有任何库代码可用于将此 CellSetDTO 对象转换为 CSV、Excel 或其他类型的格式?
我正在查看来自 CellSetDTO 类的 quartetfs 的 javadoc,但 javaDoc 没有描述。或者,我可以编写自己的代码来生成 CSV,但由于我是新手,并且 javaDoc 上没有描述,所以开始有点困难。
感谢任何指向任何文档的指针。
谢谢你,格蕾丝
我是 activePivot 的新手。我们调用了一个 mdx 查询并返回了一个 CellSetDTO。是否有任何库代码可用于将此 CellSetDTO 对象转换为 CSV、Excel 或其他类型的格式?
我正在查看来自 CellSetDTO 类的 quartetfs 的 javadoc,但 javaDoc 没有描述。或者,我可以编写自己的代码来生成 CSV,但由于我是新手,并且 javaDoc 上没有描述,所以开始有点困难。
感谢任何指向任何文档的指针。
谢谢你,格蕾丝
您可以使用您可以在沙盒项目中找到的示例,查看 CellSetPrinter 类,在构造函数 arg 中设置 CellSetDTO。请参阅 CellSetPrinter 类:
public class CellSetPrinter {
protected final CellSetDTO cellSet;
protected final AxisDTO slicer;
protected final List<AxisDTO> axes;
protected final List<CellDTO> cells;
public CellSetPrinter(CellSetDTO cellSet) {
this.cellSet = cellSet;
this.axes = cellSet.getAxes().getAxis();
this.slicer = cellSet.getSlicerAxis();
this.cells = cellSet.getCells().getCell();
}
/**
* Compute axis positions from the cell ordinal with the classic formula:
* <ul>
* <li>(x0, x1, x2) -> x0 + x1 * n0 + x2 * n1 * n2
* <li>ordinal -> (ordinal % n0, (ordinal / n0) % n1, (ordinal / (n0*n1)) % n2)
* </ul>
*
* @param ordinal
* @return tuple expressed by coordinates
*/
protected List<String> getTuple(int ordinal) {
List<String> tuple = new ArrayList<>();
// Lookup positions on axes
final int[] axisCoordinates = new int[axes.size()];
int coeff = 1;
for(int a = 0; a < axisCoordinates.length; a++) {
int positionCount = axes.get(a).getPositions().getPosition().size();
axisCoordinates[a] = (ordinal / coeff) % positionCount;
coeff *= positionCount;
}
for(int a = 0; a < axisCoordinates.length; a++) {
AxisPositionDTO position = axes.get(a).getPositions().getPosition().get(axisCoordinates[a]);
for(MemberDTO member : position.getMembers().getMember()) {
for(String pathElement : member.getPath().getItems().getItem()) {
if(!"AllMember".equals(pathElement)) {
tuple.add(pathElement);
}
}
}
}
// Append slicer content
for(AxisPositionDTO position : slicer.getPositions().getPosition()) {
for(MemberDTO member : position.getMembers().getMember()) {
for(String pathElement : member.getPath().getItems().getItem()) {
if(!"AllMember".equals(pathElement)) {
tuple.add(pathElement);
}
}
}
}
return tuple;
}
public void print(PrintStream out) {
for(CellDTO cell : cells) {
System.out.println(getTuple(cell.getOrdinal()) + " " + cell.getFormattedValue());
}
}
}