Traccia lo Stato di Conversione del Documento con C++
Possibili Scenari di Utilizzo
A volte la conversione di grandi file Excel può richiedere del tempo. Durante questo periodo, potresti voler mostrare lo stato di avanzamento della conversione invece di una semplice schermata di caricamento per migliorare l’usabilità della tua applicazione. Aspose.Cells supporta il tracciamento dello stato di avanzamento della conversione del documento fornendo l’interfaccia IPageSavingCallback. L’interfaccia IPageSavingCallback offre i metodi PageStartSaving e PageEndSaving che puoi implementare nella tua classe personalizzata. Puoi anche controllare quali pagine vengono renderizzate come dimostrato nella classe personalizzata TestPageSavingCallback
.
Monitorare il progresso della conversione dei documenti
Il seguente esempio di codice carica il file Excel di origine e stampa il suo progresso di conversione nella console utilizzando la classe personalizzata TestPageSavingCallback
che implementa l’interfaccia IPageSavingCallback.
Codice di Esempio
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
class TestPageSavingCallback : public IPageSavingCallback
{
public:
void PageStartSaving(PageStartSavingArgs& args) override
{
std::cout << "Page " << args.GetPageIndex() + 1 << " is starting to save." << std::endl;
}
void PageEndSaving(PageEndSavingArgs& args) override
{
std::cout << "Page " << args.GetPageIndex() + 1 << " has been saved." << std::endl;
}
};
int main()
{
Aspose::Cells::Startup();
U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
U16String inputFilePath = srcDir + u"PagesBook1.xlsx";
U16String outputFilePath = outDir + u"DocumentConversionProgress.pdf";
Workbook workbook(inputFilePath);
PdfSaveOptions pdfSaveOptions;
TestPageSavingCallback callback;
pdfSaveOptions.SetPageSavingCallback(&callback);
workbook.Save(outputFilePath, pdfSaveOptions);
std::cout << "Document conversion completed successfully!" << std::endl;
Aspose::Cells::Cleanup();
}
Il seguente è il codice per la classe personalizzata TestPageSavingCallback
.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
using namespace Aspose::Cells::Rendering;
class TestPageSavingCallback : public IPageSavingCallback
{
public:
void PageStartSaving(PageStartSavingArgs& args) override
{
std::cout << "Start saving page index " << args.GetPageIndex()
<< " of pages " << args.GetPageCount() << std::endl;
if (args.GetPageIndex() < 2)
{
args.SetIsToOutput(false);
}
}
void PageEndSaving(PageEndSavingArgs& args) override
{
std::cout << "End saving page index " << args.GetPageIndex()
<< " of pages " << args.GetPageCount() << std::endl;
if (args.GetPageIndex() >= 8)
{
args.SetHasMorePages(false);
}
}
};
Output della console
Start saving page index 0 of pages 11</br>
End saving page index 0 of pages 11</br>
Start saving page index 1 of pages 11</br>
End saving page index 1 of pages 11</br>
Start saving page index 2 of pages 11</br>
End saving page index 2 of pages 11</br>
Start saving page index 3 of pages 11</br>
End saving page index 3 of pages 11</br>
Start saving page index 4 of pages 11</br>
End saving page index 4 of pages 11</br>
Start saving page index 5 of pages 11</br>
End saving page index 5 of pages 11</br>
Start saving page index 6 of pages 11</br>
End saving page index 6 of pages 11</br>
Start saving page index 7 of pages 11</br>
End saving page index 7 of pages 11</br>
Start saving page index 8 of pages 11</br>
End saving page index 8 of pages 11