Search in sources :

Example 11 with WritableCellFormat

use of jxl.write.WritableCellFormat in project cubrid-manager by CUBRID.

the class ExportTableDataTask method exportXls.

/**
	 * Export data as XLS file format
	 *
	 * @param rs CUBRIDResultSetProxy
	 * @param monitor IProgressMonitor
	 */
private void exportXls(CUBRIDResultSetProxy rs, final IProgressMonitor monitor) {
    // FIXME move this logic to core module
    WritableWorkbook workbook = null;
    try {
        int sheetNum = 0;
        workbook = Workbook.createWorkbook(file);
        if (fileCharset == null || fileCharset.trim().length() == 0) {
            workbook = Workbook.createWorkbook(file);
        } else {
            WorkbookSettings workbookSettings = new WorkbookSettings();
            workbookSettings.setEncoding(fileCharset);
            workbook = Workbook.createWorkbook(file, workbookSettings);
        }
        WritableSheet sheet = workbook.createSheet("Sheet " + sheetNum, sheetNum);
        // 65536: limit xls row number.
        int rowLimit = ImportFileConstants.XLS_ROW_LIMIT;
        // it set 257. Because Tbl's first column is oid value that doesn't export
        // 256: limit xls column number.
        int columnLimit = ImportFileConstants.XLS_COLUMN_LIMIT + 1;
        int cellCharacterLimit = ImportFileConstants.XLSX_CELL_CHAR_LIMIT;
        CUBRIDResultSetMetaDataProxy rsmt = (CUBRIDResultSetMetaDataProxy) rs.getMetaData();
        int colCount = rsmt.getColumnCount() + 1;
        isExit = false;
        for (int j = 1; j < colCount; j++) {
            String columnName = rsmt.getColumnName(j);
            String columnType = rsmt.getColumnTypeName(j);
            int precision = rsmt.getPrecision(j);
            columnType = columnType == null ? "" : columnType;
            setIsHasBigValue(columnType, precision);
            //the data length > XLS column character limit
            if (precision > cellCharacterLimit) {
                final String confirmMSG = Messages.bind(Messages.exportCharacterCountExceedWarnInfo, columnName);
                Display.getDefault().syncExec(new Runnable() {

                    public void run() {
                        if (!CommonUITool.openConfirmBox(confirmMSG)) {
                            isExit = true;
                        }
                    }
                });
                if (isExit) {
                    return;
                }
            }
            // first line add column name
            if (isFirstRowAsColumnName) {
                WritableFont wf = new WritableFont(WritableFont.ARIAL, 12, WritableFont.BOLD, false);
                WritableCellFormat wcf = new WritableCellFormat(wf);
                if (columnName.length() > cellCharacterLimit) {
                    Label label = new Label(j - 1, 0, columnName.substring(0, cellCharacterLimit));
                    sheet.addCell(label);
                    label = null;
                } else {
                    Label label = new Label(j - 1, 0, columnName.toString(), wcf);
                    sheet.addCell(label);
                    label = null;
                }
                wcf = null;
                wf = null;
            }
        }
        if (colCount > columnLimit) {
            Display.getDefault().syncExec(new Runnable() {

                public void run() {
                    if (!CommonUITool.openConfirmBox(Messages.exportColumnCountOverWarnInfo)) {
                        isExit = true;
                    }
                }
            });
            if (isExit) {
                return;
            }
            colCount = columnLimit;
        }
        int xlsRecordNum = 0;
        if (isFirstRowAsColumnName) {
            xlsRecordNum = 1;
        }
        while (rs.next()) {
            if (!CommonUITool.isAvailableMemory(REMAINING_MEMORY_SIZE)) {
                throw new OutOfMemoryError();
            }
            for (int j = 1; j < colCount; j++) {
                String colType = rsmt.getColumnTypeName(j);
                colType = FieldHandlerUtils.amendDataTypeByResult(rs, j, colType);
                int precision = rsmt.getPrecision(j);
                setIsHasBigValue(colType, precision);
                Object cellValue = FieldHandlerUtils.getRsValueForExport(colType, rs, j, nullValue);
                if (cellValue instanceof Long) {
                    sheet.addCell(new Number(j - 1, xlsRecordNum, (Long) cellValue));
                } else if (cellValue instanceof Double) {
                    sheet.addCell(new Number(j - 1, xlsRecordNum, (Double) cellValue));
                } else if (cellValue instanceof Timestamp) {
                    String dataCellValue = FieldHandlerUtils.formatDateTime((Timestamp) cellValue);
                    sheet.addCell(new Label(j - 1, xlsRecordNum, dataCellValue));
                } else if (cellValue instanceof java.sql.Time) {
                    String dataCellValue = DateUtil.getDatetimeString(((java.sql.Time) cellValue).getTime(), FieldHandlerUtils.FORMAT_TIME);
                    sheet.addCell(new Label(j - 1, xlsRecordNum, dataCellValue));
                } else if (cellValue instanceof java.sql.Date) {
                    String dataCellValue = DateUtil.getDatetimeString(((java.sql.Date) cellValue).getTime(), FieldHandlerUtils.FORMAT_DATE);
                    sheet.addCell(new Label(j - 1, xlsRecordNum, dataCellValue));
                } else {
                    sheet.addCell(new Label(j - 1, xlsRecordNum, cellValue.toString().length() > cellCharacterLimit ? cellValue.toString().substring(0, cellCharacterLimit) : cellValue.toString()));
                }
            }
            xlsRecordNum++;
            if (((exportedCount + 1) % rowLimit) == 0) {
                sheetNum++;
                xlsRecordNum -= rowLimit;
                sheet = workbook.createSheet("Sheet " + sheetNum, sheetNum);
            }
            exportedCount++;
            monitor.worked(10);
            monitor.subTask(Messages.bind(Messages.msgExportDataRow, exportedCount));
        }
    } catch (Exception e) {
        throw new RuntimeException(e);
    } finally {
        try {
            if (workbook != null) {
                workbook.write();
            }
        } catch (Exception ignored) {
        }
        try {
            if (workbook != null) {
                workbook.close();
            }
        } catch (Exception ignored) {
        }
    }
}
Also used : WritableFont(jxl.write.WritableFont) Label(jxl.write.Label) WorkbookSettings(jxl.WorkbookSettings) WritableSheet(jxl.write.WritableSheet) WritableCellFormat(jxl.write.WritableCellFormat) Timestamp(java.sql.Timestamp) Date(java.util.Date) ParseException(java.text.ParseException) FileNotFoundException(java.io.FileNotFoundException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) SQLException(java.sql.SQLException) IOException(java.io.IOException) WritableWorkbook(jxl.write.WritableWorkbook) CUBRIDResultSetMetaDataProxy(com.cubrid.jdbc.proxy.driver.CUBRIDResultSetMetaDataProxy) Number(jxl.write.Number)

Example 12 with WritableCellFormat

use of jxl.write.WritableCellFormat in project cubrid-manager by CUBRID.

the class ExportConnectionUtil method writeToXls.

/**
	 * Write to xls
	 *
	 * @throws IOException
	 * @throws RowsExceededException
	 * @throws WriteException
	 */
private void writeToXls() throws IOException, RowsExceededException, WriteException {
    // FIXME split logic and ui
    WritableWorkbook workbook = null;
    WorkbookSettings workbookSettings = new WorkbookSettings();
    workbookSettings.setEncoding("UTF-8");
    workbook = Workbook.createWorkbook(file, workbookSettings);
    WritableSheet sheet = workbook.createSheet(Messages.sheetNameConnections, 0);
    WritableFont wf = new WritableFont(WritableFont.ARIAL, 10, WritableFont.BOLD, false);
    WritableCellFormat wcf = new WritableCellFormat(wf);
    jxl.write.Label label = null;
    label = new jxl.write.Label(0, 0, Messages.nameColumn, wcf);
    sheet.addCell(label);
    label = new jxl.write.Label(1, 0, Messages.iPColumn, wcf);
    sheet.addCell(label);
    label = new jxl.write.Label(2, 0, Messages.portColumn, wcf);
    sheet.addCell(label);
    label = new jxl.write.Label(3, 0, Messages.userColumn, wcf);
    sheet.addCell(label);
    label = new jxl.write.Label(4, 0, Messages.commentColumn, wcf);
    sheet.addCell(label);
    label = new jxl.write.Label(5, 0, Messages.javaUrlColumn, wcf);
    sheet.addCell(label);
    label = new jxl.write.Label(6, 0, Messages.phpUrlColumn, wcf);
    sheet.addCell(label);
    int index = 1;
    for (CubridDatabase database : input) {
        if (database == null) {
            continue;
        }
        DatabaseInfo dbInfo = database.getDatabaseInfo();
        if (dbInfo == null) {
            continue;
        }
        /* name */
        sheet.addCell(new jxl.write.Label(0, index, dbInfo.getDbName()));
        /* ip */
        sheet.addCell(new jxl.write.Label(1, index, dbInfo.getBrokerIP()));
        /* port */
        sheet.addCell(new jxl.write.Label(2, index, dbInfo.getBrokerPort()));
        /* user */
        sheet.addCell(new jxl.write.Label(3, index, getDbUser(dbInfo)));
        /* comment */
        String comment = "";
        DatabaseEditorConfig editorConfig = QueryOptions.getEditorConfig(database, managerMode);
        if (editorConfig != null && editorConfig.getDatabaseComment() != null) {
            comment = editorConfig.getDatabaseComment();
        }
        sheet.addCell(new jxl.write.Label(4, index, comment));
        /* java url */
        String javaUrl = NodeUtil.getJavaConnectionUrl(dbInfo);
        sheet.addCell(new jxl.write.Label(5, index, javaUrl));
        /* php url */
        String phpUrl = NodeUtil.getPHPConnectionUrl(dbInfo);
        sheet.addCell(new jxl.write.Label(6, index, phpUrl));
        index++;
    }
    workbook.write();
    workbook.close();
}
Also used : WritableWorkbook(jxl.write.WritableWorkbook) DatabaseInfo(com.cubrid.cubridmanager.core.cubrid.database.model.DatabaseInfo) WritableFont(jxl.write.WritableFont) WorkbookSettings(jxl.WorkbookSettings) WritableSheet(jxl.write.WritableSheet) CubridDatabase(com.cubrid.common.ui.spi.model.CubridDatabase) WritableCellFormat(jxl.write.WritableCellFormat) DatabaseEditorConfig(com.cubrid.common.ui.spi.model.DatabaseEditorConfig)

Example 13 with WritableCellFormat

use of jxl.write.WritableCellFormat in project cubrid-manager by CUBRID.

the class BrokerLogTopMergeProgress method getNormalCell.

/**
	 * getNormalCell
	 *
	 * @return WritableCellFormat
	 */
public static WritableCellFormat getNormalCell() {
    // FIXME move this logic to core module
    WritableFont font = new WritableFont(WritableFont.TIMES, 11);
    WritableCellFormat format = new WritableCellFormat(font);
    try {
        format.setAlignment(jxl.format.Alignment.CENTRE);
        format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
        format.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
        format.setWrap(true);
    } catch (WriteException e) {
        LOGGER.error(e.getMessage(), e);
    }
    return format;
}
Also used : WriteException(jxl.write.WriteException) WritableFont(jxl.write.WritableFont) WritableCellFormat(jxl.write.WritableCellFormat)

Example 14 with WritableCellFormat

use of jxl.write.WritableCellFormat in project cubrid-manager by CUBRID.

the class BrokerLogTopMergeProgress method getSQLCell.

/**
	 * getSQLCell
	 *
	 * @return WritableCellFormat
	 */
public static WritableCellFormat getSQLCell() {
    // FIXME move this logic to core module
    WritableFont font = new WritableFont(WritableFont.TIMES, 11);
    WritableCellFormat format = new WritableCellFormat(font);
    try {
        format.setAlignment(jxl.format.Alignment.LEFT);
        format.setVerticalAlignment(jxl.format.VerticalAlignment.TOP);
        format.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
        format.setWrap(true);
    } catch (WriteException e) {
        LOGGER.error(e.getMessage(), e);
    }
    return format;
}
Also used : WriteException(jxl.write.WriteException) WritableFont(jxl.write.WritableFont) WritableCellFormat(jxl.write.WritableCellFormat)

Example 15 with WritableCellFormat

use of jxl.write.WritableCellFormat in project cubrid-manager by CUBRID.

the class BrokerLogTopMergeProgress method writeExcelPartitionByfile.

/**
	 * writeExcelPartitionByfile
	 *
	 * @param mergeString
	 * @param xlsFile
	 * @throws Exception
	 */
public void writeExcelPartitionByfile(ArrayList<ArrayList<String>> mergeString, File xlsFile) throws Exception {
    // FIXME move this logic to core module
    WritableWorkbook wwb = null;
    WritableSheet ws = null;
    String sheetName = "log_top_merge";
    try {
        WritableCellFormat normalCellStyle = getNormalCell();
        WritableCellFormat sqlCellStyle = getSQLCell();
        WorkbookSettings workbookSettings = new WorkbookSettings();
        workbookSettings.setEncoding(charset);
        wwb = Workbook.createWorkbook(xlsFile, workbookSettings);
        ws = wwb.createSheet(sheetName, 0);
        ws.setColumnView(7, 200);
        ws.addCell(new jxl.write.Label(0, 0, "NUM", normalCellStyle));
        ws.addCell(new jxl.write.Label(1, 0, "ID", normalCellStyle));
        ws.addCell(new jxl.write.Label(2, 0, "MAX (sec)", normalCellStyle));
        ws.addCell(new jxl.write.Label(3, 0, "MIN (sec)", normalCellStyle));
        ws.addCell(new jxl.write.Label(4, 0, "AVG (sec)", normalCellStyle));
        ws.addCell(new jxl.write.Label(5, 0, "Counts", normalCellStyle));
        ws.addCell(new jxl.write.Label(6, 0, "Errors", normalCellStyle));
        ws.addCell(new jxl.write.Label(7, 0, "SQL contents", normalCellStyle));
        jxl.write.Label label = null;
        jxl.write.Number num = null;
        for (int i = 0; i < mergeString.size(); i++) {
            List<String> oneLine = mergeString.get(i);
            int row = i + 1;
            for (int j = 0; j < 8; j++) {
                if (j == 0) {
                    String numString = oneLine.get(0) == null ? "" : oneLine.get(0);
                    num = new jxl.write.Number(j, row, Integer.valueOf(numString.replaceAll("Q", "")), normalCellStyle);
                    ws.addCell(num);
                } else if (j == 1) {
                    String comment = "";
                    String sql = oneLine.get(6) == null ? "" : oneLine.get(6).trim();
                    if (sql.startsWith("/*")) {
                        int endIndexOfComment = sql.indexOf("*/");
                        if (endIndexOfComment != -1) {
                            comment = sql.substring(2, endIndexOfComment).trim();
                        }
                    }
                    label = new jxl.write.Label(j, row, comment, sqlCellStyle);
                    ws.addCell(label);
                } else if (j > 1 && j < 7) {
                    num = new jxl.write.Number(j, row, Float.valueOf(oneLine.get(j - 1)), normalCellStyle);
                    ws.addCell(num);
                } else {
                    String s = oneLine.get(6);
                    if (s.length() > excelCelllength) {
                        s = s.substring(0, excelCelllength - 3);
                        s += "...";
                    }
                    label = new jxl.write.Label(j, row, s, sqlCellStyle);
                    ws.addCell(label);
                }
            }
        }
        wwb.write();
    } catch (Exception e) {
        LOGGER.error("write excel error", e);
        throw e;
    } finally {
        if (wwb != null) {
            try {
                wwb.close();
            } catch (Exception ex) {
                LOGGER.error("close excel stream error", ex);
            }
        }
    }
}
Also used : WritableSheet(jxl.write.WritableSheet) WorkbookSettings(jxl.WorkbookSettings) WritableCellFormat(jxl.write.WritableCellFormat) WriteException(jxl.write.WriteException) IOException(java.io.IOException) InvocationTargetException(java.lang.reflect.InvocationTargetException) WritableWorkbook(jxl.write.WritableWorkbook)

Aggregations

WritableCellFormat (jxl.write.WritableCellFormat)24 WritableFont (jxl.write.WritableFont)17 WriteException (jxl.write.WriteException)17 WritableSheet (jxl.write.WritableSheet)10 WorkbookSettings (jxl.WorkbookSettings)6 WritableWorkbook (jxl.write.WritableWorkbook)6 Label (jxl.write.Label)3 TableItem (org.eclipse.swt.widgets.TableItem)3 File (java.io.File)2 IOException (java.io.IOException)2 InvocationTargetException (java.lang.reflect.InvocationTargetException)2 List (java.util.List)2 SqlRunnerFailed (com.cubrid.common.ui.common.sqlrunner.model.SqlRunnerFailed)1 CubridDatabase (com.cubrid.common.ui.spi.model.CubridDatabase)1 DatabaseEditorConfig (com.cubrid.common.ui.spi.model.DatabaseEditorConfig)1 DatabaseInfo (com.cubrid.cubridmanager.core.cubrid.database.model.DatabaseInfo)1 CUBRIDResultSetMetaDataProxy (com.cubrid.jdbc.proxy.driver.CUBRIDResultSetMetaDataProxy)1 FileNotFoundException (java.io.FileNotFoundException)1 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 SQLException (java.sql.SQLException)1