Detener la conversión o carga utilizando InterruptMonitor cuando está tardando demasiado

Escenarios de uso posibles

Aspose.Cells te permite detener la conversión del libro a varios formatos como PDF, HTML, etc. utilizando el objeto InterruptMonitor cuando está tardando demasiado. El proceso de conversión suele ser intensivo en CPU y memoria, por lo que es útil detenerlo cuando los recursos son limitados. Se puede utilizar InterruptMonitor tanto para detener la conversión como para detener la carga de un libro grande. Por favor, utiliza la propiedad Workbook.InterruptMonitor para detener la conversión y la propiedad LoadOptions.InterruptMonitor para cargar un libro grande.

Detener la conversión o carga utilizando InterruptMonitor cuando está tardando demasiado

El siguiente código de ejemplo explica el uso del objeto InterruptMonitor. El código convierte un archivo de Excel bastante grande a PDF. Tomará varios segundos (es decir, más de 30 segundos) para convertirlo debido a estas líneas de código.

//Access cell AB1000000 and add some text inside it.

Cell cell = ws.getCells().get("AB1000000");

cell.putValue("This is text.");

Como se ve, AB1000000 es una celda bastante alejada en el archivo XLSX. Sin embargo, el método WaitForWhileAndThenInterrupt() interrumpe la conversión después de 10 segundos y el programa finaliza/termina. Por favor, utiliza el siguiente código para ejecutar el código de ejemplo.

new StopConversionOrLoadingUsingInterruptMonitor().testRun();

Código de muestra

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
public class StopConversionOrLoadingUsingInterruptMonitor
{
static String outDir = Utils.Get_OutputDirectory();
//Create InterruptMonitor object
InterruptMonitor im = new InterruptMonitor();
public class ConversionThread extends Thread
{
private Thread monitorThread;
public ConversionThread(Thread monitorThread)
{
this.monitorThread = monitorThread;
}
//This function will create workbook and convert it to Pdf format
void createWorkbookAndConvertItToPdfFormat() throws Exception
{
//Create a workbook object
Workbook wb = new Workbook();
//Assign it InterruptMonitor object
wb.setInterruptMonitor(im);
//Access first worksheet
Worksheet ws = wb.getWorksheets().get(0);
//Access cell AB1000000 and add some text inside it.
Cell cell = ws.getCells().get("AB1000000");
cell.putValue("This is text.");
try
{
//Save the workbook to Pdf format
wb.save(outDir + "output_InterruptMonitor.pdf");
//Show successful message
System.out.println("Excel to PDF - Successful Conversion");
//stop monitor thread
monitorThread.interrupt();
}
catch (CellsException ex)
{
if(ex.getCode() == ExceptionType.INTERRUPTED)
{
System.out.println("Conversion process is interrupted - Message: " + ex.getMessage());
}
else
{
throw ex;
}
}
}
public void run()
{
try
{
createWorkbookAndConvertItToPdfFormat();
}
catch(Exception ex)
{
System.out.println("Conversion thread error - Message: " + ex.getMessage());
}
}
}//ConversionThread
public class MonitorThread extends Thread
{
//This function will interrupt the conversion process after 10s
void waitForWhileAndThenInterrupt() throws Exception
{
Thread.sleep(1000 * 10);
im.interrupt();
}
public void run()
{
try
{
waitForWhileAndThenInterrupt();
}
catch (InterruptedException ex)
{
System.out.println("Monitor thread is interrupted - Message: " + ex.getMessage());
}
catch (Exception ex)
{
System.out.println("Monitor thread error - Message: " + ex.getMessage());
}
}
}//MonitorThread
public void testRun() throws Exception
{
MonitorThread monitorThread = new MonitorThread();
ConversionThread conversionThread = new ConversionThread(monitorThread);
monitorThread.start();
conversionThread.start();
monitorThread.join();
conversionThread.join();
}
public static void main(String[] args) throws Exception
{
new StopConversionOrLoadingUsingInterruptMonitor().testRun();
// Print the message
System.out.println("StopConversionOrLoadingUsingInterruptMonitor executed successfully.");
}
}//StopConversionOrLoadingUsingInterruptMonitor