Arrêter la conversion ou le chargement à l aide d InterruptMonitor lorsqu elle prend trop de temps

Scénarios d’utilisation possibles

Aspose.Cells vous permet d’arrêter la conversion du classeur dans divers formats tels que PDF, HTML, etc. en utilisant l’objet InterruptMonitor lorsque cela prend trop de temps. Le processus de conversion est souvent intensif en CPU et en mémoire et il est souvent utile de l’arrêter lorsque les ressources sont limitées. Vous pouvez utiliser InterruptMonitor pour arrêter à la fois la conversion et le chargement d’un classeur volumineux. Veuillez utiliser la propriété Workbook.InterruptMonitor pour arrêter la conversion et la propriété LoadOptions.InterruptMonitor pour charger un classeur volumineux.

Arrêter la conversion ou le chargement à l’aide de InterruptMonitor lorsqu’il prend trop de temps

Le code d’échantillon suivant explique l’utilisation de l’objet InterruptMonitor. Le code convertit un fichier Excel assez volumineux en PDF. Cela prendra plusieurs secondes (c’est-à-dire plus de 30 secondes) pour le convertir en raison de ces lignes de code.

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

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

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

Comme vous le voyez, AB1000000 est une cellule assez éloignée dans le fichier XLSX. Cependant, la méthode WaitForWhileAndThenInterrupt() interrompt la conversion après 10 secondes et le programme se termine/se ferme. Veuillez utiliser le code suivant pour exécuter le code d’échantillon.

new StopConversionOrLoadingUsingInterruptMonitor().testRun();

Code d’exemple

// 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