Excel — популярный формат для обмена информацией. Вы можете оказаться в ситуации, когда у вас есть данные в файле Excel (XLS или XLSX), которые необходимо импортировать в базу данных. Для этого вам необходимо преобразовать файл Excel в формат CSV. С другой стороны, у вас могут быть данные в формате CSV, экспортированные из базы данных, которые вам нужно будет обработать в файле Excel. В таких случаях вам необходимо преобразовать файл CSV в формат Excel. В этой статье вы узнаете, как выполнить оба эти преобразования программно с помощью C++.
- C++ API для преобразования файлов Excel в файлы CSV и CSV в формат Excel
- Преобразование файлов Excel в формат CSV с помощью C++
- Преобразование рабочих листов Excel в файлы CSV
- Преобразование файлов CSV в формат Excel с помощью C++
- Получить бесплатную лицензию
C++ API для преобразования файлов Excel в файлы CSV и CSV в формат Excel
Aspose.Cells for C++ — это собственная библиотека C++, позволяющая создавать, читать и изменять файлы Excel. Кроме того, API поддерживает преобразование файлов Excel в формат CSV и наоборот. Вы можете либо установить API через NuGet, либо загрузить его напрямую из раздела Загрузки.
PM> Install-Package Aspose.Cells.Cpp
Преобразование файлов Excel в формат CSV с помощью C++
Преобразование файлов Excel в формат CSV очень просто с Aspose.Cells for C++ API. Ниже приведены шаги для преобразования файлов Excel в формат CSV с помощью C++.
- Загрузите файл Excel с помощью класса IWorkbook.
- Сохраните файл в формате CSV, используя команду IWorkbook->Save(intrusiveptrAspose::Cells::Systems::String имя_файла, метод Aspose::Cells::SaveFormat saveFormat).
Ниже приведен пример кода для преобразования файлов Excel в формат CSV.
// Путь к исходному каталогу.
StringPtr srcDir = new String("SourceDirectory\\");
// Выходной путь к каталогу.
StringPtr outDir = new String("OutputDirectory\\");
// Загрузите исходный файл Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("Sample1.xlsx")));
// Сохранить выходной CSV-файл
workbook->Save(outDir->StringAppend(new String("Sample1_out.csv")), SaveFormat_CSV);
Преобразование рабочих листов Excel в файлы CSV
В предыдущем примере преобразуется только первый лист, если файл Excel содержит несколько листов. Если вы хотите преобразовать несколько рабочих листов в формат CSV, вы можете выполнить следующие шаги.
- Загрузите файл Excel с помощью класса IWorkbook.
- Получите рабочие листы с помощью метода IWorkbook->GetIWorksheets().
- Прокрутите полученные рабочие листы.
- В цикле вы можете указать собственную логику для преобразования определенных рабочих листов в файлы CSV. В этой демонстрации все листы конвертируются в файлы CSV.
- Получите лист для преобразования с помощью метода IWorkbook->GetIWorksheets()->GetObjectByIndex (Aspose::Cells::Systems::Int32 index).
- Создайте экземпляр класса IWorkbook для представления нового CSV-файла.
- Скопируйте ранее полученный рабочий лист в новый экземпляр рабочей книги, используя команду IWorkbook->GetIWorksheets()->GetObjectByIndex(0)->Copy (intrusiveptrAspose::Cells::IWorksheet sourceSheet).
- Сохраните новую книгу в формате CSV, используя команду IWorkbook->Save (intrusiveptrAspose::Cells::Systems::String имя_файла, метод Aspose::Cells::SaveFormat saveFormat).
Ниже приведен пример кода для преобразования листов Excel в файлы CSV с помощью 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<Aspose::Cells::Systems::Text::StringBuilder> stringBuilder = new Aspose::Cells::Systems::Text::StringBuilder();
for (int sheet = 0; sheet < sheets->GetCount(); sheet++)
{
// Получить рабочий лист для копирования
intrusive_ptr<IWorksheet> worksheet = sheets->GetObjectByIndex(sheet);
// Создайте экземпляр класса IWorkbook для представления новой книги.
intrusive_ptr<IWorkbook> newWorkbook = Factory::CreateIWorkbook();
// Скопируйте ранее полученный лист в новую книгу.
newWorkbook->GetIWorksheets()->GetObjectByIndex(0)->Copy(worksheet);
// Очистите построитель строк и создайте выходной путь с конкатенацией строк.
stringBuilder->Clear();
stringBuilder->Append(outDir);
stringBuilder->Append((StringPtr)new String("Sample1_sheet_"));
stringBuilder->Append(sheet);
stringBuilder->Append((StringPtr)new String("_out.csv"));
// Сохранить выходной CSV-файл
newWorkbook->Save(stringBuilder->ToString(), SaveFormat_CSV);
}
Преобразование файлов CSV в формат Excel с помощью C++
Ниже приведены шаги для преобразования файлов CSV в формат Excel с помощью C++.
- Создайте экземпляр класса ILoadOptions.
- Создайте объект класса IWorkbook, используя созданный ранее экземпляр ILoadOptions.
- Сохраните файл в формате Excel с помощью команды IWorkbook->Сохранить (intrusiveptrAspose::Cells::Systems::String имя_файла, метод Aspose::Cells::SaveFormat saveFormat).
Ниже приведен пример кода для преобразования файлов CSV в формат Excel с помощью C++.
// Путь к исходному каталогу.
StringPtr srcDir = new String("SourceDirectory\\");
// Выходной путь к каталогу.
StringPtr outDir = new String("OutputDirectory\\");
// Создать объект CSV LoadOptions
intrusive_ptr<ILoadOptions> loadOptions = Factory::CreateILoadOptions(LoadFormat_CSV);
// Загрузите исходный файл Excel
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("Sample1.csv")), loadOptions);
// Сохранить выходной CSV-файл
workbook->Save(outDir->StringAppend(new String("Sample1_out.xlsx")), SaveFormat_Xlsx);
Получить бесплатную лицензию
Вы можете попробовать API без ограничений по ознакомительной версии, запросив бесплатную временную лицензию.
Вывод
В этой статье вы узнали, как конвертировать файлы Excel в формат CSV и файлы CSV в формат Excel (XLS/XLSX) с помощью C++. Aspose.Cells for C++ — это обширный API, предоставляющий множество дополнительных функций для работы с файлами Excel. Вы можете подробно изучить API, используя официальную документацию. Если у вас возникнут вопросы, свяжитесь с нами на нашем бесплатном форуме поддержки.