Файли Excel використовуються для керування складними даними, такими як бюджети підрозділів або річні звіти про продажі. Можуть бути ситуації, коли у вас є готовий шаблон, який ви хочете використовувати для створення звіту. Для цього ви можете створити копію аркуша шаблону. Вам також може знадобитися впорядкувати аркуші, щоб продемонструвати потік даних. Для таких випадків ви можете змінити робочі аркуші відповідно до ваших вимог. У світлі цього ви дізнаєтеся, як програмно копіювати та переміщувати робочі аркуші за допомогою C++.
- C++ API для копіювання або переміщення аркушів Excel
- Скопіюйте робочі аркуші в книгу Excel за допомогою C++
- Копіювання робочих аркушів з однієї робочої книги в іншу
- Перемістіть робочий аркуш в іншу позицію за допомогою 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 sheetName) метод.
- Нарешті збережіть файл Excel за допомогою IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String fileName) метод.
Нижче наведено приклад коду для копіювання аркуша в книгу 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 for C++ також дозволяє копіювати аркуші між двома файлами Excel. Нижче наведено кроки для копіювання аркуша з одного файлу Excel в інший.
- По-перше, завантажте вихідний і цільовий файли Excel за допомогою класу IWorkbook.
- Отримайте колекцію аркушів вихідної книги за допомогою методу IWorkbook->GetIWorksheets().
- Отримайте робочий аркуш, який потрібно скопіювати, за допомогою методу IWorksheetCollection->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Скопіюйте робочий аркуш до робочої книги призначення за допомогою IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index)->Copy (intrusiveptr)Aspose::Cells::IWorksheet sourceSheet) метод.
- Нарешті, збережіть цільовий файл Excel за допомогою IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String fileName) метод.
Нижче наведено зразок коду для копіювання аркуша з однієї книги 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")));
Перемістіть робочий аркуш в іншу позицію за допомогою C++
Нижче наведено кроки, щоб змінити положення робочого аркуша в книзі 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 fileName) метод.
Нижче наведено зразок коду для переміщення робочого аркуша в іншу позицію в одній книзі за допомогою 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, які ви можете дослідити, відвідавши офіційну документацію. У разі будь-яких запитань зв’яжіться з нами на нашому безкоштовному форумі підтримки.