Отслеживание прогресса преобразования Excel в TIFF с помощью C++
Возможные сценарии использования
Иногда преобразование больших файлов Excel может занять некоторое время. В этот момент вы можете захотеть показывать прогресс преобразования документа вместо просто экрана загрузки, чтобы улучшить удобство использования вашего приложения. Aspose.Cells поддерживает отслеживание прогресса преобразования документов, предоставляя интерфейс IPageSavingCallback. Интерфейс IPageSavingCallback обеспечивает методы PageStartSaving и PageEndSaving, которые вы можете реализовать в вашем пользовательском классе. Также вы можете управлять тем, какие страницы рендерятся, как продемонстрировано в пользовательском классе TestPageSavingCallback.
Отслеживание процесса преобразования Excel в TIFF
Следующий пример кода загружает исходный файл Excel и выводит прогресс преобразования в консоль, используя пользовательский класс TestPageSavingCallback, реализующий интерфейс IPageSavingCallback. Генерируемый файл прикреплён для вашего ознакомления.
Образец кода
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
class TestTiffPageSavingCallback : public IPageSavingCallback {
public:
void PageStartSaving(PageStartSavingArgs& args) override {
// Implement page start saving logic here
}
void PageEndSaving(PageEndSavingArgs& args) override {
// Implement page end saving logic here
}
};
int main() {
Aspose::Cells::Startup();
U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
Workbook workbook(srcDir + u"sampleUseWorkbookRenderForImageConversion.xlsx");
ImageOrPrintOptions opts;
opts.SetPageSavingCallback(new TestTiffPageSavingCallback());
opts.SetImageType(Aspose::Cells::Drawing::ImageType::Tiff);
WorkbookRender wr(workbook, opts);
wr.ToImage(outDir + u"DocumentConversionProgressForTiff_out.tiff");
std::cout << "Document converted to TIFF successfully!" << std::endl;
Aspose::Cells::Cleanup();
return 0;
}
Ниже приведен код для пользовательского класса TestTiffPageSavingCallback.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
using namespace Aspose::Cells::Rendering;
class TestTiffPageSavingCallback : public IPageSavingCallback
{
public:
void PageStartSaving(PageStartSavingArgs& args) override
{
std::cout << "Start saving page index " << args.GetPageIndex() << " of pages " << args.GetPageCount() << std::endl;
// Don't output pages before page index 2.
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;
// Don't output pages after page index 8.
if (args.GetPageIndex() >= 8)
{
args.SetHasMorePages(false);
}
}
};
Вывод в консоль
Start saving page index 0 of pages 10</br>
End saving page index 0 of pages 10</br>
Start saving page index 1 of pages 10</br>
End saving page index 1 of pages 10</br>
Start saving page index 2 of pages 10</br>
End saving page index 2 of pages 10</br>
Start saving page index 3 of pages 10</br>
End saving page index 3 of pages 10</br>
Start saving page index 4 of pages 10</br>
End saving page index 4 of pages 10</br>
Start saving page index 5 of pages 10</br>
End saving page index 5 of pages 10</br>
Start saving page index 6 of pages 10</br>
End saving page index 6 of pages 10</br>
Start saving page index 7 of pages 10</br>
End saving page index 7 of pages 10</br>
Start saving page index 8 of pages 10</br>
End saving page index 8 of pages 10</br>