diff --git a/src/main/java/org/openepics/names/util/ExcelUtil.java b/src/main/java/org/openepics/names/util/ExcelUtil.java index 5f59d7802aea26b9d919a88f81b8a1356ab1720b..173fadbbe5f726dec73d81019288bb488714d3fe 100644 --- a/src/main/java/org/openepics/names/util/ExcelUtil.java +++ b/src/main/java/org/openepics/names/util/ExcelUtil.java @@ -65,12 +65,12 @@ public class ExcelUtil { private static final Logger LOGGER = Logger.getLogger(ExcelUtil.class.getName()); - public static final String MIME_TYPE_EXCEL = "application/vnd.ms-excel"; - public static final String MIME_TYPE_OPENXML_SPREADSHEET = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; + public static final String MIME_TYPE_EXCEL = "application/vnd.ms-excel"; + public static final String MIME_TYPE_OPENXML_SPREADSHEET = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; // width (in units of 1/256th of a character width) - // column width 2.75 inch (to fit header text and uuid) - private static final int SHEET_COLUMN_WIDTH = 28 * 256 + 64; + // column width 3.44 inch (to fit header text and uuid) + private static final int SHEET_COLUMN_WIDTH = 35 * 256 + 64; private static final int NAMEELEMENTCOMMAND_LENGTH = 6; private static final String[][] NAMEELEMENT_HEADER_COMMENT = { @@ -108,7 +108,9 @@ public class ExcelUtil { {"When", "Date and time when the structure entry was created."}, {"Who", "Name (user) of who created the structure entry."} }; + private static final String ARIAL = "Arial"; private static final String SHEET = "Entries"; + private static final String TEXT = "text"; private static final String FAILED_TO_EXPORT_VALUES_TO_FILE = "Failed to export values to file"; private static final String FILE_COULD_NOT_BE_PARSED_FOR_VALUE_AT_ROW_CELL = "File could not be parsed for value at row: {0} cell: {1}"; @@ -395,14 +397,28 @@ public class ExcelUtil { try (Workbook workbook = new XSSFWorkbook(); ByteArrayOutputStream out = new ByteArrayOutputStream();) { Sheet sheet = workbook.createSheet(SHEET); - // prepare header + // prepare Drawing<?> drawing = sheet.createDrawingPatriarch(); CreationHelper factory = workbook.getCreationHelper(); ClientAnchor anchor = factory.createClientAnchor(); + + // format, font, style DataFormat format = workbook.createDataFormat(); - short textFormat = format.getFormat("text"); + short textFormat = format.getFormat(TEXT); Font headerFont = workbook.createFont(); headerFont.setBold(true); + headerFont.setFontHeightInPoints((short)12); + headerFont.setFontName(ARIAL); + Font dataFont = workbook.createFont(); + dataFont.setBold(false); + dataFont.setFontHeightInPoints((short)12); + dataFont.setFontName(ARIAL); + CellStyle headerCellStyle = workbook.createCellStyle(); + headerCellStyle.setDataFormat(textFormat); + headerCellStyle.setFont(headerFont); + CellStyle dataCellStyle = workbook.createCellStyle(); + dataCellStyle.setDataFormat(textFormat); + dataCellStyle.setFont(dataFont); // header Row headerRow = sheet.createRow(0); @@ -416,10 +432,7 @@ public class ExcelUtil { sheet.setColumnWidth(columnIndex, SHEET_COLUMN_WIDTH); // style - CellStyle cellStyle = cell.getCellStyle(); - cellStyle.setDataFormat(textFormat); - cellStyle.setFont(headerFont); - cell.setCellStyle(cellStyle); + cell.setCellStyle(headerCellStyle); // comment anchor.setRow1(headerRow.getRowNum()); @@ -436,21 +449,57 @@ public class ExcelUtil { // data int rowIndex = 1; for (NameElement nameElement : nameElements) { - Row row = sheet.createRow(rowIndex++); - row.createCell(0).setCellValue(nameElement.getUuid() != null ? nameElement.getUuid().toString() : null); - row.createCell(1).setCellValue(nameElement.getParentSystemStructure() != null ? nameElement.getParentSystemStructure().toString() : null); - row.createCell(2).setCellValue(nameElement.getParentDeviceStructure() != null ? nameElement.getParentDeviceStructure().toString() : null); - row.createCell(3).setCellValue(nameElement.getIndex()); - row.createCell(4).setCellValue(nameElement.getDescription()); - row.createCell(5).setCellValue(nameElement.getComment()); - row.createCell(6).setCellValue(nameElement.getSystemStructure()); - row.createCell(7).setCellValue(nameElement.getDeviceStructure()); - row.createCell(8).setCellValue(nameElement.getName()); - row.createCell(9).setCellValue(nameElement.getStatus() != null ? nameElement.getStatus().toString() : null); - row.createCell(10).setCellValue(nameElement.isLatest()); - row.createCell(11).setCellValue(nameElement.isDeleted()); - row.createCell(12).setCellValue(DateFormat.getDateTimeInstance().format(nameElement.getWhen())); - row.createCell(13).setCellValue(nameElement.getWho()); + Row row = sheet.createRow(rowIndex++); + for (int columnIndex = 0; columnIndex < NAMEELEMENT_HEADER_COMMENT.length; columnIndex++) { + Cell cell = row.createCell(columnIndex); + cell.setCellStyle(dataCellStyle); + switch (columnIndex) { + case 0: + cell.setCellValue(nameElement.getUuid() != null ? nameElement.getUuid().toString() : null); + break; + case 1: + cell.setCellValue(nameElement.getParentSystemStructure() != null ? nameElement.getParentSystemStructure().toString() : null); + break; + case 2: + cell.setCellValue(nameElement.getParentDeviceStructure() != null ? nameElement.getParentDeviceStructure().toString() : null); + break; + case 3: + cell.setCellValue(nameElement.getIndex()); + break; + case 4: + cell.setCellValue(nameElement.getDescription()); + break; + case 5: + cell.setCellValue(nameElement.getComment()); + break; + case 6: + cell.setCellValue(nameElement.getSystemStructure()); + break; + case 7: + cell.setCellValue(nameElement.getDeviceStructure()); + break; + case 8: + cell.setCellValue(nameElement.getName()); + break; + case 9: + cell.setCellValue(nameElement.getStatus() != null ? nameElement.getStatus().toString() : null); + break; + case 10: + cell.setCellValue(nameElement.isLatest()); + break; + case 11: + cell.setCellValue(nameElement.isDeleted()); + break; + case 12: + cell.setCellValue(DateFormat.getDateTimeInstance().format(nameElement.getWhen())); + break; + case 13: + cell.setCellValue(nameElement.getWho()); + break; + default: + break; + } + } } workbook.write(out); return new ByteArrayInputStream(out.toByteArray()); @@ -485,14 +534,28 @@ public class ExcelUtil { try (Workbook workbook = new XSSFWorkbook(); ByteArrayOutputStream out = new ByteArrayOutputStream();) { Sheet sheet = workbook.createSheet(SHEET); - // prepare header + // prepare Drawing<?> drawing = sheet.createDrawingPatriarch(); CreationHelper factory = workbook.getCreationHelper(); ClientAnchor anchor = factory.createClientAnchor(); + + // format, font, style DataFormat format = workbook.createDataFormat(); - short textFormat = format.getFormat("text"); + short textFormat = format.getFormat(TEXT); Font headerFont = workbook.createFont(); headerFont.setBold(true); + headerFont.setFontHeightInPoints((short)12); + headerFont.setFontName(ARIAL); + Font dataFont = workbook.createFont(); + dataFont.setBold(false); + dataFont.setFontHeightInPoints((short)12); + dataFont.setFontName(ARIAL); + CellStyle headerCellStyle = workbook.createCellStyle(); + headerCellStyle.setDataFormat(textFormat); + headerCellStyle.setFont(headerFont); + CellStyle dataCellStyle = workbook.createCellStyle(); + dataCellStyle.setDataFormat(textFormat); + dataCellStyle.setFont(dataFont); // header Row headerRow = sheet.createRow(0); @@ -506,10 +569,7 @@ public class ExcelUtil { sheet.setColumnWidth(columnIndex, SHEET_COLUMN_WIDTH); // style - CellStyle cellStyle = cell.getCellStyle(); - cellStyle.setDataFormat(textFormat); - cellStyle.setFont(headerFont); - cell.setCellStyle(cellStyle); + cell.setCellStyle(headerCellStyle); // comment anchor.setRow1(headerRow.getRowNum()); @@ -526,21 +586,57 @@ public class ExcelUtil { // data int rowIndex = 1; for (StructureElement structureElement : structureElements) { - Row row = sheet.createRow(rowIndex++); - row.createCell(0).setCellValue(structureElement.getUuid() != null ? structureElement.getUuid().toString() : null); - row.createCell(1).setCellValue(structureElement.getType() != null ? structureElement.getType().toString() : null); - row.createCell(2).setCellValue(structureElement.getParent() != null ? structureElement.getParent().toString() : null); - row.createCell(3).setCellValue(structureElement.getName()); - row.createCell(4).setCellValue(structureElement.getMnemonic()); - row.createCell(5).setCellValue(structureElement.getDescription()); - row.createCell(6).setCellValue(structureElement.getComment()); - row.createCell(7).setCellValue(structureElement.getMnemonicPath()); - row.createCell(8).setCellValue(structureElement.getLevel()); - row.createCell(9).setCellValue(structureElement.getStatus() != null ? structureElement.getStatus().toString() : null); - row.createCell(10).setCellValue(structureElement.isLatest()); - row.createCell(11).setCellValue(structureElement.isDeleted()); - row.createCell(12).setCellValue(DateFormat.getDateTimeInstance().format(structureElement.getWhen())); - row.createCell(13).setCellValue(structureElement.getWho()); + Row row = sheet.createRow(rowIndex++); + for (int columnIndex = 0; columnIndex < NAMEELEMENT_HEADER_COMMENT.length; columnIndex++) { + Cell cell = row.createCell(columnIndex); + cell.setCellStyle(dataCellStyle); + switch (columnIndex) { + case 0: + cell.setCellValue(structureElement.getUuid() != null ? structureElement.getUuid().toString() : null); + break; + case 1: + cell.setCellValue(structureElement.getType() != null ? structureElement.getType().toString() : null); + break; + case 2: + cell.setCellValue(structureElement.getParent() != null ? structureElement.getParent().toString() : null); + break; + case 3: + cell.setCellValue(structureElement.getName()); + break; + case 4: + cell.setCellValue(structureElement.getMnemonic()); + break; + case 5: + cell.setCellValue(structureElement.getDescription()); + break; + case 6: + cell.setCellValue(structureElement.getComment()); + break; + case 7: + cell.setCellValue(structureElement.getMnemonicPath()); + break; + case 8: + cell.setCellValue(structureElement.getLevel()); + break; + case 9: + cell.setCellValue(structureElement.getStatus() != null ? structureElement.getStatus().toString() : null); + break; + case 10: + cell.setCellValue(structureElement.isLatest()); + break; + case 11: + cell.setCellValue(structureElement.isDeleted()); + break; + case 12: + cell.setCellValue(DateFormat.getDateTimeInstance().format(structureElement.getWhen())); + break; + case 13: + cell.setCellValue(structureElement.getWho()); + break; + default: + break; + } + } } workbook.write(out); return new ByteArrayInputStream(out.toByteArray()); diff --git a/src/main/resources/static/templates/NameElementCommand.xlsx b/src/main/resources/static/templates/NameElementCommand.xlsx index bddda9b8c789cd7daf1940ab52342bac678c5cf8..c7b958fc540bbadb1edc3ce9bad34bac6e23a98b 100644 Binary files a/src/main/resources/static/templates/NameElementCommand.xlsx and b/src/main/resources/static/templates/NameElementCommand.xlsx differ diff --git a/src/main/resources/static/templates/StructureElementCommand.xlsx b/src/main/resources/static/templates/StructureElementCommand.xlsx index 4f0b0b720089e3491e9350cd19c5f9d1480cc220..a1307bf5471519e6f5dbb173e1d23de406feaa15 100644 Binary files a/src/main/resources/static/templates/StructureElementCommand.xlsx and b/src/main/resources/static/templates/StructureElementCommand.xlsx differ