Файлы Excel используются для управления сложными данными, такими как бюджеты отделов или годовые отчеты о продажах. Могут быть ситуации, когда у вас есть готовый шаблон, который вы хотите использовать для создания отчета. Для этого вы можете создать копию рабочего листа шаблона. Вам также может понадобиться организовать рабочие листы, чтобы продемонстрировать поток данных. В таких случаях вы можете изменить порядок рабочих листов в соответствии с вашими требованиями. В свете этого вы узнаете, как программно копировать и перемещать рабочие листы с помощью C++.
- C++ API для копирования или перемещения листов Excel
- Скопируйте рабочие листы в книгу Excel с помощью C++
- Скопируйте рабочие листы из одной рабочей книги в другую
- Переместите рабочий лист в другую позицию с помощью С++
- Получить бесплатную лицензию
C++ API для копирования или перемещения листов Excel
Aspose.Cells for C++ — это собственная библиотека C++, которая позволяет создавать, читать и обновлять файлы Excel, не требуя установки Microsoft Excel. API также поддерживает копирование и перемещение листов Excel. Вы можете либо установить API через NuGet, либо загрузить его напрямую из раздела Загрузки.
PM> Install-Package Aspose.Cells.Cpp
Скопируйте рабочие листы в книгу Excel с помощью C++
Ниже приведены шаги для копирования рабочих листов в книгу Excel.
- Загрузите файл Excel с помощью класса IWorkbook.
- Получите коллекцию рабочих листов с помощью метода IWorkbook->GetIWorksheets().
- Добавьте копию нужного рабочего листа с помощью IWorksheetCollection->AddCopy (intrusiveptrAspose::Cells::Systems::String имялиста) метод.
- Наконец, сохраните файл Excel с помощью IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String имя_файла) метод.
Ниже приведен пример кода для копирования листа в книгу Excel с помощью C++.
// Путь к исходному каталогу.
StringPtr srcDir = new String("SourceDirectory\\");
// Выходной путь к каталогу.
StringPtr outDir = new String("OutputDirectory\\");
// Загрузите файл Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("Sample1.xlsx")));
// Получить рабочие листы
intrusive_ptr<IWorksheetCollection> sheets = workbook->GetIWorksheets();
// Скопируйте данные на новый лист из существующего листа в рабочей книге.
sheets->AddCopy(new String("Sheet1"));
// Сохраните файл Excel
workbook->Save(outDir->StringAppend(new String("Sample1_out.xlsx")));
Скопируйте рабочие листы из одной рабочей книги в другую
Aspose.Cells для C++ также позволяет копировать листы между двумя файлами Excel. Ниже приведены шаги для копирования рабочего листа из одного файла Excel в другой.
- Во-первых, загрузите исходный и конечный файлы Excel с помощью класса IWorkbook.
- Получите коллекцию рабочих листов исходной книги с помощью метода IWorkbook->GetIWorksheets().
- Получите лист, который вы хотите скопировать, с помощью метода IWorksheetCollection->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Скопируйте рабочий лист в целевую рабочую книгу, используя IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index)->Copy (intrusiveptrAspose::Cells::IWorksheet sourceSheet).
- Наконец, сохраните целевой файл Excel с помощью IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String имя_файла) метод.
Ниже приведен пример кода для копирования листа из одной книги Excel в другую с помощью C++.
// Путь к исходному каталогу.
StringPtr srcDir = new String("SourceDirectory\\");
// Выходной путь к каталогу.
StringPtr outDir = new String("OutputDirectory\\");
// Загрузите исходный файл Excel
intrusive_ptr<IWorkbook> sourceWorkbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("Sample1.xlsx")));
// Загрузите целевой файл Excel
intrusive_ptr<IWorkbook> destinationWorkbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("book1.xlsx")));
// Получить рабочие листы исходной книги
intrusive_ptr<IWorksheetCollection> sheets = sourceWorkbook->GetIWorksheets();
// Получите рабочий лист, который вы хотите скопировать
intrusive_ptr<IWorksheet> worksheet = sheets->GetObjectByIndex(0);
// Скопируйте ранее полученный лист в новую книгу.
destinationWorkbook->GetIWorksheets()->GetObjectByIndex(0)->Copy(worksheet);
// Сохраните файл Excel
destinationWorkbook->Save(outDir->StringAppend(new String("book1_out.xlsx")));
Переместите рабочий лист в другую позицию с помощью С++
Ниже приведены шаги для изменения положения рабочего листа в книге Excel.
- Загрузите файл Excel с помощью класса IWorkbook.
- Получите коллекцию рабочих листов с помощью метода IWorkbook->GetIWorksheets().
- Получите лист, который вы хотите переместить, с помощью метода IWorksheetCollection->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Переместите рабочий лист в нужное место, используя метод IWorksheet->MoveTo (Aspose::Cells::Systems::Int32 index).
- Наконец, сохраните файл Excel с помощью IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String имя_файла) метод.
Ниже приведен пример кода для перемещения рабочего листа в другую позицию в той же книге с помощью C++.
// Путь к исходному каталогу.
StringPtr srcDir = new String("SourceDirectory\\");
// Выходной путь к каталогу.
StringPtr outDir = new String("OutputDirectory\\");
// Загрузите файл Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("Sample1.xlsx")));
// Получить рабочие листы
intrusive_ptr<IWorksheetCollection> sheets = workbook->GetIWorksheets();
// Доступ к первому листу
intrusive_ptr<IWorksheet> sheet = sheets->GetObjectByIndex(0);
// Переместите первый лист на вторую позицию в книге.
sheet->MoveTo(1);
// Сохраните файл Excel
workbook->Save(outDir->StringAppend(new String("Sample1_out.xlsx")));
Получить бесплатную лицензию
Вы можете попробовать API без ограничений по ознакомительной версии, запросив бесплатную временную лицензию.
Вывод
В этой статье вы узнали, как копировать листы в одной книге Excel или между разными книгами. Кроме того, вы видели, как изменить положение рабочего листа в файле Excel. Aspose.Cells for C++ предоставляет гораздо больше возможностей для работы с файлами Excel, с которыми вы можете ознакомиться, посетив официальную документацию. Если у вас возникнут вопросы, свяжитесь с нами на нашем бесплатном форуме поддержки.