Прекратите преобразование или загрузку с использованием объекта InterruptMonitor, если это занимает слишком много времени

Возможные сценарии использования

Aspose.Cells позволяет вам прекратить преобразование рабочей книги в различные форматы, такие как PDF, HTML и т. д., используя объект InterruptMonitor, когда это занимает слишком много времени. Процесс преобразования часто требует много ресурсов ЦП и памяти, и часто бывает полезно останавливать его, если ресурсы ограничены. Вы можете использовать InterruptMonitor как для остановки преобразования, так и для остановки загрузки большой рабочей книги. Пожалуйста, используйте свойство Workbook.InterruptMonitor для остановки преобразования и свойство LoadOptions.InterruptMonitor для загрузки большой рабочей книги.

Прекратите преобразование или загрузку с использованием объекта InterruptMonitor, если это занимает слишком много времени

Приведенный ниже образец кода объясняет использование объекта InterruptMonitor. Код преобразует довольно большой файл Excel в PDF. Это займет несколько секунд (т. е. более 30 секунд), чтобы его преобразовать из-за этих строк кода.

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

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

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

Как видите, AB1000000 - довольно удаленная ячейка в файле XLSX. Тем не менее метод WaitForWhileAndThenInterrupt() прерывает преобразование после 10 секунд, и программа завершается/прерывается. Пожалуйста, используйте следующий код для выполнения образца кода.

new StopConversionOrLoadingUsingInterruptMonitor().testRun();

Образец кода

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