Search in sources :

Example 1 with StreamPOITransferConsumer

use of org.jkiss.dbeaver.data.office.export.StreamPOITransferConsumer in project dbeaver by dbeaver.

the class OpenSpreadsheetHandler method execute.

@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
    IResultSetController resultSet = ResultSetCommandHandler.getActiveResultSet(HandlerUtil.getActivePart(event));
    if (resultSet == null) {
        DBeaverUI.getInstance().showError("Open Excel", "No active results viewer");
        return null;
    }
    DBSDataContainer dataContainer = resultSet.getDataContainer();
    if (dataContainer == null || dataContainer.getDataSource() == null) {
        DBeaverUI.getInstance().showError("Open Excel", "Not connected to a database");
        return null;
    }
    AbstractJob exportJob = new AbstractJob("Open Excel") {

        {
            setUser(true);
            setSystem(false);
        }

        @Override
        protected IStatus run(DBRProgressMonitor monitor) {
            try {
                File tempDir = DBeaverCore.getInstance().getTempFolder(monitor, "office-files");
                File tempFile = new File(tempDir, CommonUtils.escapeFileName(CommonUtils.truncateString(dataContainer.getName(), 32)) + "." + new SimpleDateFormat("yyyyMMdd-HHmmss").format(System.currentTimeMillis()) + ".xlsx");
                DataExporterXLSX exporter = new DataExporterXLSX();
                StreamPOITransferConsumer consumer = new StreamPOITransferConsumer();
                StreamPOIConsumerSettings settings = new StreamPOIConsumerSettings();
                settings.setOutputEncodingBOM(false);
                settings.setOpenFolderOnFinish(false);
                settings.setOutputFolder(tempDir.getAbsolutePath());
                settings.setOutputFilePattern(tempFile.getName());
                Map<Object, Object> properties = DataExporterXLSX.getDefaultProperties();
                consumer.initTransfer(dataContainer, settings, exporter, properties);
                DatabaseTransferProducer producer = new DatabaseTransferProducer(dataContainer);
                DatabaseProducerSettings producerSettings = new DatabaseProducerSettings();
                producerSettings.setExtractType(DatabaseProducerSettings.ExtractType.SINGLE_QUERY);
                producerSettings.setQueryRowCount(false);
                producer.transferData(monitor, consumer, producerSettings);
                consumer.finishTransfer(monitor, false);
                DBeaverUI.asyncExec(new Runnable() {

                    @Override
                    public void run() {
                        if (!UIUtils.launchProgram(tempFile.getAbsolutePath())) {
                            DBeaverUI.getInstance().showError("Open XLSX", "Can't open XLSX file '" + tempFile.getAbsolutePath() + "'");
                        }
                    }
                });
            } catch (Exception e) {
                DBeaverUI.getInstance().showError("Error opening in Excel", null, e);
            }
            return Status.OK_STATUS;
        }
    };
    exportJob.schedule();
    return null;
}
Also used : StreamPOIConsumerSettings(org.jkiss.dbeaver.data.office.export.StreamPOIConsumerSettings) IResultSetController(org.jkiss.dbeaver.ui.controls.resultset.IResultSetController) ExecutionException(org.eclipse.core.commands.ExecutionException) DataExporterXLSX(org.jkiss.dbeaver.data.office.export.DataExporterXLSX) AbstractJob(org.jkiss.dbeaver.model.runtime.AbstractJob) DatabaseTransferProducer(org.jkiss.dbeaver.tools.transfer.database.DatabaseTransferProducer) DatabaseProducerSettings(org.jkiss.dbeaver.tools.transfer.database.DatabaseProducerSettings) StreamPOITransferConsumer(org.jkiss.dbeaver.data.office.export.StreamPOITransferConsumer) DBRProgressMonitor(org.jkiss.dbeaver.model.runtime.DBRProgressMonitor) DBSDataContainer(org.jkiss.dbeaver.model.struct.DBSDataContainer) File(java.io.File) SimpleDateFormat(java.text.SimpleDateFormat)

Aggregations

File (java.io.File)1 SimpleDateFormat (java.text.SimpleDateFormat)1 ExecutionException (org.eclipse.core.commands.ExecutionException)1 DataExporterXLSX (org.jkiss.dbeaver.data.office.export.DataExporterXLSX)1 StreamPOIConsumerSettings (org.jkiss.dbeaver.data.office.export.StreamPOIConsumerSettings)1 StreamPOITransferConsumer (org.jkiss.dbeaver.data.office.export.StreamPOITransferConsumer)1 AbstractJob (org.jkiss.dbeaver.model.runtime.AbstractJob)1 DBRProgressMonitor (org.jkiss.dbeaver.model.runtime.DBRProgressMonitor)1 DBSDataContainer (org.jkiss.dbeaver.model.struct.DBSDataContainer)1 DatabaseProducerSettings (org.jkiss.dbeaver.tools.transfer.database.DatabaseProducerSettings)1 DatabaseTransferProducer (org.jkiss.dbeaver.tools.transfer.database.DatabaseTransferProducer)1 IResultSetController (org.jkiss.dbeaver.ui.controls.resultset.IResultSetController)1