protected Row createNewRow(Worksheet resultSheet) { Row newRow = Context.getsmlObjectFactory().createRow(); Long currentRow = lastRowForSheet.get(resultSheet); currentRow = currentRow != null ? currentRow : 0; currentRow++; newRow.setR(currentRow); lastRowForSheet.put(resultSheet, currentRow); resultSheet.getSheetData().getRow().add(newRow); newRow.setParent(resultSheet.getSheetData()); return newRow; }
protected Row createNewRow(Worksheet resultSheet) { Row newRow = Context.getsmlObjectFactory().createRow(); Long currentRow = lastRowForSheet.get(resultSheet); currentRow = currentRow != null ? currentRow : 0; currentRow++; newRow.setR(currentRow); lastRowForSheet.put(resultSheet, currentRow); resultSheet.getSheetData().getRow().add(newRow); newRow.setParent(resultSheet.getSheetData()); return newRow; }
protected void saveXlsxAsCsv(Document document, OutputStream outputStream) throws IOException, Docx4JException { CSVWriter writer = new CSVWriter(new OutputStreamWriter(outputStream), ';', CSVWriter.DEFAULT_QUOTE_CHARACTER); for (Document.SheetWrapper sheetWrapper : document.getWorksheets()) { Worksheet worksheet = sheetWrapper.getWorksheet().getContents(); for (Row row : worksheet.getSheetData().getRow()) { String rows[] = new String[row.getC().size()]; List<Cell> cells = row.getC(); boolean emptyRow = true; for (int i = 0; i < cells.size(); i++) { checkThreadInterrupted(); Cell cell = cells.get(i); String value = cell.getV(); rows[i] = value; if (value != null && !value.isEmpty()) emptyRow = false; } if (!emptyRow) writer.writeNext(rows); } } writer.close(); }
protected void saveXlsxAsCsv(Document document, OutputStream outputStream) throws IOException, Docx4JException { CSVWriter writer = new CSVWriter(new OutputStreamWriter(outputStream), ';', CSVWriter.DEFAULT_QUOTE_CHARACTER); for (Document.SheetWrapper sheetWrapper : document.getWorksheets()) { Worksheet worksheet = sheetWrapper.getWorksheet().getContents(); for (Row row : worksheet.getSheetData().getRow()) { String rows[] = new String[row.getC().size()]; List<Cell> cells = row.getC(); boolean emptyRow = true; for (int i = 0; i < cells.size(); i++) { checkThreadInterrupted(); Cell cell = cells.get(i); String value = cell.getV(); rows[i] = value; if (value != null && !value.isEmpty()) emptyRow = false; } if (!emptyRow) writer.writeNext(rows); } } writer.close(); }
protected List<Cell> copyCells(BandData band, Range templateRange, List<Row> resultSheetRows, Row firstRow, Worksheet resultSheet) { List<Cell> resultCells = new ArrayList<>(); for (int i = 0; i <= templateRange.getLastRow() - templateRange.getFirstRow(); i++) { Range oneRowRange = new Range(templateRange.getSheet(), templateRange.getFirstColumn(), templateRange.getFirstRow() + i, templateRange.getLastColumn(), templateRange.getFirstRow() + i); Map<CellReference, Cell> cellsForOneRowRange = template.getCellsByRange(oneRowRange); List<Cell> templateCells = new ArrayList<>(cellsForOneRowRange.values()); Row templateRow = !templateCells.isEmpty() ? (Row) templateCells.get(0).getParent() : resultSheet.getSheetData().getRow().get(oneRowRange.getFirstRow() - 1); createFakeTemplateCellsForEmptyOnes(oneRowRange, cellsForOneRowRange, templateCells); Row resultRow = resultSheetRows.get((int) (firstRow.getR() + i - 1)); List<Cell> currentRowResultCells = copyCells(templateRange, band, resultRow, templateCells); resultCells.addAll(currentRowResultCells); copyRowSettings(templateRow, resultRow, getWorksheet(templateRow), getWorksheet(resultRow)); } return resultCells; }
protected List<Cell> copyCells(BandData band, Range templateRange, List<Row> resultSheetRows, Row firstRow, Worksheet resultSheet) { List<Cell> resultCells = new ArrayList<Cell>(); for (int i = 0; i <= templateRange.getLastRow() - templateRange.getFirstRow(); i++) { Range oneRowRange = new Range(templateRange.getSheet(), templateRange.getFirstColumn(), templateRange.getFirstRow() + i, templateRange.getLastColumn(), templateRange.getFirstRow() + i); Map<CellReference, Cell> cellsForOneRowRange = template.getCellsByRange(oneRowRange); List<Cell> templateCells = new ArrayList<Cell>(cellsForOneRowRange.values()); Row templateRow = !templateCells.isEmpty() ? (Row) templateCells.get(0).getParent() : resultSheet.getSheetData().getRow().get(oneRowRange.getFirstRow() - 1); createFakeTemplateCellsForEmptyOnes(oneRowRange, cellsForOneRowRange, templateCells); Row resultRow = resultSheetRows.get((int) (firstRow.getR() + i - 1)); List<Cell> currentRowResultCells = copyCells(templateRange, band, resultRow, templateCells); resultCells.addAll(currentRowResultCells); copyRowSettings(templateRow, resultRow, getWorksheet(templateRow), getWorksheet(resultRow)); } return resultCells; }
protected Row ensureNecessaryRowsCreated(Range templateRange, Worksheet resultSheet, Row firstRow) { if (firstRow == null) { firstRow = createNewRow(resultSheet); } if (resultSheet.getSheetData().getRow().size() < firstRow.getR() + templateRange.getLastRow() - templateRange.getFirstRow()) { for (int i = 0; i < templateRange.getLastRow() - templateRange.getFirstRow(); i++) { Row row = createNewRow(resultSheet); } } return firstRow; }
protected Row ensureNecessaryRowsCreated(Range templateRange, Worksheet resultSheet, Row firstRow) { if (firstRow == null) { firstRow = createNewRow(resultSheet); } if (resultSheet.getSheetData().getRow().size() < firstRow.getR() + templateRange.getLastRow() - templateRange.getFirstRow()) { for (int i = 0; i < templateRange.getLastRow() - templateRange.getFirstRow(); i++) { Row row = createNewRow(resultSheet); } } return firstRow; }
public void clearWorkbook() { for (SheetWrapper sheet : worksheets) { sheet.worksheet.getJaxbElement().getSheetData().getRow().clear(); CTMergeCells mergeCells = sheet.worksheet.getJaxbElement().getMergeCells(); if (mergeCells != null && mergeCells.getMergeCell() != null) { mergeCells.getMergeCell().clear(); } try { CTPageBreak rowBreaks = sheet.worksheet.getContents().getRowBreaks(); if (rowBreaks != null && rowBreaks.getBrk() != null) { rowBreaks.getBrk().clear(); } } catch (Docx4JException e) { throw new ReportFormattingException("An error occurred while clearing docx4j workbook", e); } } workbook.getDefinedNames().getDefinedName().clear(); }
public void clearWorkbook() { for (SheetWrapper sheet : worksheets) { getWorksheetContents(sheet).getSheetData().getRow().clear(); CTMergeCells mergeCells = getWorksheetContents(sheet).getMergeCells(); if (mergeCells != null && mergeCells.getMergeCell() != null) { mergeCells.getMergeCell().clear(); } try { CTPageBreak rowBreaks = sheet.worksheet.getContents().getRowBreaks(); if (rowBreaks != null && rowBreaks.getBrk() != null) { rowBreaks.getBrk().clear(); } } catch (Docx4JException e) { throw new ReportFormattingException("An error occurred while clearing docx4j workbook", e); } } workbook.getDefinedNames().getDefinedName().clear(); }
public Map<CellReference, Cell> getCellsByRange(Range range) { Worksheet sheet = getSheetByName(range.getSheet()); SheetData data = sheet.getSheetData(); Map<CellReference, Cell> result = new LinkedHashMap<>(); for (int i = 1; i <= data.getRow().size(); i++) { Row row = data.getRow().get(i - 1); if (range.getFirstRow() <= row.getR() && row.getR() <= range.getLastRow()) { List<Cell> c = row.getC(); for (Cell cell : c) { CellReference cellReference = new CellReference(range.getSheet(), cell.getR()); if (range.getFirstColumn() <= cellReference.getColumn() && cellReference.getColumn() <= range.getLastColumn()) { result.put(cellReference, cell); } } } } return result; }
public Map<CellReference, Cell> getCellsByRange(Range range) { Worksheet sheet = getSheetByName(range.getSheet()); SheetData data = sheet.getSheetData(); Map<CellReference, Cell> result = new LinkedHashMap<CellReference, Cell>(); for (int i = 1; i <= data.getRow().size(); i++) { Row row = data.getRow().get(i - 1); if (range.getFirstRow() <= row.getR() && row.getR() <= range.getLastRow()) { List<Cell> c = row.getC(); for (Cell cell : c) { CellReference cellReference = new CellReference(range.getSheet(), cell.getR()); if (range.getFirstColumn() <= cellReference.getColumn() && cellReference.getColumn() <= range.getLastColumn()) { result.put(cellReference, cell); } } } } return result; }
protected void writeVBand(BandData band) { Range templateRange = getBandRange(band); if (templateRange != null) { Worksheet resultSheet = result.getSheetByName(templateRange.getSheet()); List<Row> resultSheetRows = resultSheet.getSheetData().getRow(); Row firstRow = findNextRowForVBand(band, templateRange, resultSheetRows); firstRow = ensureNecessaryRowsCreated(templateRange, resultSheet, firstRow); List<Cell> resultCells = copyCells(band, templateRange, resultSheetRows, firstRow, resultSheet); updateRangeMappings(band, templateRange, resultCells); } }
protected void writeVBand(BandData band) { Range templateRange = getBandRange(band); if (templateRange != null) { Worksheet resultSheet = result.getSheetByName(templateRange.getSheet()); List<Row> resultSheetRows = resultSheet.getSheetData().getRow(); Row firstRow = findNextRowForVBand(band, templateRange, resultSheetRows); firstRow = ensureNecessaryRowsCreated(templateRange, resultSheet, firstRow); List<Cell> resultCells = copyCells(band, templateRange, resultSheetRows, firstRow, resultSheet); updateRangeMappings(band, templateRange, resultCells); } }
protected void writeHBand(BandData band) { Range templateRange = getBandRange(band); if (templateRange != null) { Worksheet resultSheet = result.getSheetByName(templateRange.getSheet()); List<Row> resultSheetRows = resultSheet.getSheetData().getRow(); Row firstRow = findNextRowForHBand(band, templateRange, resultSheetRows); firstRow = ensureNecessaryRowsCreated(templateRange, resultSheet, firstRow); List<Cell> resultCells = copyCells(band, templateRange, resultSheetRows, firstRow, resultSheet); updateRangeMappings(band, templateRange, resultCells); //render children if (resultCells != null && !resultCells.isEmpty()) { for (BandData child : band.getChildrenList()) { writeBand(child); } } } }
protected void writeHBand(BandData band) { Range templateRange = getBandRange(band); if (templateRange != null) { Worksheet resultSheet = result.getSheetByName(templateRange.getSheet()); List<Row> resultSheetRows = resultSheet.getSheetData().getRow(); Row firstRow = findNextRowForHBand(band, templateRange, resultSheetRows); firstRow = ensureNecessaryRowsCreated(templateRange, resultSheet, firstRow); List<Cell> resultCells = copyCells(band, templateRange, resultSheetRows, firstRow, resultSheet); updateRangeMappings(band, templateRange, resultCells); //render children if (resultCells != null && !resultCells.isEmpty()) { for (BandData child : band.getChildrenList()) { writeBand(child); } } } }
Document.SheetWrapper etalonWorksheet = etalonWorksheets.get(i); List<Row> resultRows = resultWorksheet.getWorksheet().getContents().getSheetData().getRow(); List<Row> etalonRows = etalonWorksheet.getWorksheet().getContents().getSheetData().getRow(); for (int j = 0, rowSize = resultRows.size(); j < rowSize; j++) { Row resultRow = resultRows.get(j);
SheetData sheetData = sheet.getJaxbElement().getSheetData(); org.xlsx4j.sml.ObjectFactory factory = org.xlsx4j.jaxb.Context.getsmlObjectFactory(); CTCalcPr ctCalcPr = factory.createCTCalcPr();