假设我在SSIS中有一个平面文件作为源,它包含3列并且不断改变
public static void addColLabel(XSSFPivotTable pivotTable, int columnIndex) {
AreaReference pivotArea = new AreaReference(pivotTable.getPivotCacheDefinition().getCTPivotCacheDefinition()
.getCacheSource().getWorksheetSource().getRef());
int lastRowIndex = pivotArea.getLastCell().getRow() - pivotArea.getFirstCell().getRow();
int lastColIndex = pivotArea.getLastCell().getCol() - pivotArea.getFirstCell().getCol();
if (columnIndex > lastColIndex) {
throw new IndexOutOfBoundsException();
}
CTPivotFields pivotFields = pivotTable.getCTPivotTableDefinition().getPivotFields();
CTPivotField pivotField = CTPivotField.Factory.newInstance();
CTItems items = pivotField.addNewItems();
pivotField.setAxis(STAxis.AXIS_COL);
pivotField.setShowAll(false);
for (int i = 0; i <= lastRowIndex; i++) {
items.addNewItem().setT(STItemType.DEFAULT);
}
items.setCount(items.sizeOfItemArray());
pivotFields.setPivotFieldArray(columnIndex, pivotField);
CTColFields rowFields;
if (pivotTable.getCTPivotTableDefinition().getColFields() != null) {
rowFields = pivotTable.getCTPivotTableDefinition().getColFields();
} else {
rowFields = pivotTable.getCTPivotTableDefinition().addNewColFields();
}
rowFields.addNewField().setX(columnIndex);
rowFields.setCount(rowFields.sizeOfFieldArray());
}
现在我需要更改平面文件(假设添加了两个新列),那么也应该更改目标文件(SQL中的表)。