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) {
}
}
}
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();
}
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;
}
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;
}
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);
}
}
}
}
Aggregations