Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 29.04.2018
Сообщений: 44

Не могу подключить библиотеку libxlsxwriter

16.05.2024, 12:34. Показов 4081. Ответов 7

Студворк — интернет-сервис помощи студентам
Здравствуйте. Пытаюсь скомпилировать в c++ builder 11 comunity edition данный код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
void __fastcall TForm2::Button5Click(TObject *Sender)
{
    TListBox *listBox = dynamic_cast<TListBox*>(FindComponent("ListBox1"));
    TLabel *label = dynamic_cast<TLabel*>(FindComponent("Label4"));
    if (!listBox || !label) return;
 
    String path = label->Caption; // Путь для сохранения файлов XLSX
    std::set<String> uniqueWords; // Множество для хранения уникальных слов
 
    for (int i = 0; i < listBox->Items->Count; i++)
    {
        String item = listBox->Items->Strings[i];
        String firstWord = item.SubString(1, item.Pos(" ") - 1);
 
        if (uniqueWords.find(firstWord) == uniqueWords.end())
        {
            uniqueWords.insert(firstWord);
            String filePath = path + "\\" + firstWord + ".xlsx";
            lxw_workbook  *workbook  = workbook_new(filePath.w_str());
            if (!workbook) continue; // Если не удалось создать файл, продолжаем с следующим элементом
 
            // Создание листов
            workbook_add_worksheet(workbook, "Список аппаратногообеспечения. Физические серверы");
            workbook_add_worksheet(workbook, "Списокаппаратногообеспечения. Виртуальные серверы");
            // ... добавление остальных листов ...
 
            lxw_error error = workbook_close(workbook);
            if (error != LXW_NO_ERROR)
            {
                // Если возникла ошибка при сохранении файла
                ShowMessage("Ошибка при сохранении файла: " + filePath);
                return;
            }
        }
    }
 
    // Если все файлы были успешно сохранены
    ShowMessage("Все файлы были успешно сохранены.");
}
для подключения библиотеки в проект воспользовался данной инструкцией: https://libxlsxwriter.github.i... l#gsg_ming

Папку libxlsxwriter с полученными скомпилированными файлами в папке lib поместил в папку с проектом.
(перенес скомпилированные файлы библиотеки libxlsxwriter.dll libxlsxwriter.a и libxlsxwriter.so на виндовс10 из msys), открыл проект в c++ builder, перешел в c++ shared options в include path указал libxlsxwriter\include с заголовочным файлом xlsxwriter.h, а в Library path указал путь libxlsxwriter\lib, куда поместил libxlsxwriter.dll libxlsxwriter.a и libxlsxwriter.so.
Но при попытке скомпилировать проект выдает ошибку:

Кликните здесь для просмотра всего текста
Checking project dependencies...
Compiling Генерация отчётов.cbproj (Debug, Win32)
bcc32c command line for "Генерация отчётовPCH1.h"
c:\program files (x86)\embarcadero\studio\22.0\bin\bcc32c .exe -cc1 -D _DEBUG -D FRAMEWORK_VCL -D USEPACKAGES -output-dir .\Win32\Debug -I
C:\Users\s.sutugin\Documents\Embarcadero \Studio\Projects -I C:\Users\s.sutugin\Documents\Embarcadero \Studio\Projects\libxlsxwriter\include\x lsxwriter
-I "c:\program files (x86)\embarcadero\studio\22.0\include\wi ndows\vcl" -I libxlsxwriter\include\xlsxwriter\third_p arty -I libxlsxwriter\test\unit -I
libxlsxwriter\third_party\dtoa -I libxlsxwriter\third_party\md5 -I libxlsxwriter\third_party\minizip -I libxlsxwriter\third_party\tmpfileplus -I
libxlsxwriter\include -I libxlsxwriter\include\xlsxwriter -I libxlsxwriter\cocoapods -I libxlsxwriter\test\cpp -I libxlsxwriter\dev\fuzzing -isystem
"c:\program files (x86)\embarcadero\studio\22.0\include" -isystem "c:\program files (x86)\embarcadero\studio\22.0\include\di nkumware64" -isystem
"c:\program files (x86)\embarcadero\studio\22.0\include\wi ndows\crtl" -isystem "c:\program files (x86)\embarcadero\studio\22.0\include\wi ndows\sdk"
-isystem "c:\program files (x86)\embarcadero\studio\22.0\include\wi ndows\rtl" -isystem "c:\program files
(x86)\embarcadero\studio\22.0\include\wi ndows\vcl" -isystem "c:\program files (x86)\embarcadero\studio\22.0\include\wi ndows\fmx" -isystem
C:\Users\Public\Documents\Embarcadero\St udio\22.0\hpp\Win32 -isystem C:\Users\Public\Documents\Embarcadero\St udio\22.0\hpp\Win32
-debug-info-kind=standalone -fcxx-exceptions -fborland-extensions -nobuiltininc -nostdsysteminc -triple i686-pc-windows-omf -emit-pch
-mrelocation-model static -masm-verbose -ffunction-sections -fexceptions -fseh -mstack-alignment=16 -fno-spell-checking -fno-use-cxa-atexit
-fno-threadsafe-statics -x c++ -std=c++17 -O0 -fmath-errno -tR -tM -tU -tW -o ".\Win32\Debug\Генерация отчётовPCH1.pch" --auto-dependency-output
"Генерация отчётовPCH1.h"
[bcc32c Error] error reading 'Генерация отчётовPCH1.h'
Failed
Elapsed time: 00:00:00.4


Пытался ранее успешно использовать библиотеку LibXL, но там высвечивается баннер с библиотекой в создаваемых эксель файлах, к тому же создаются файлы с ошибкой восстановления листов. Подскажите, пожалуйста, как быть
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.05.2024, 12:34
Ответы с готовыми решениями:

Не могу подключить библиотеку
Пытаюсь запустить простую программу с выводом &quot;Hello World&quot;, но у меня не находит функцию cout #include &lt;iostream&gt; void main()...

Не могу подключить библиотеку
Создал проект , проект C++ без использования Qt . Использую Qt Creator как IDE и тут столкнулся с проблемой . Не могу подключить библиотеку...

Не могу подключить библиотеку
Я знаю что где-то туплю но не могу понять где,при подключении Painter среда жалуется на ее отсуцтвии,что делать?

7
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,354
Записей в блоге: 3
16.05.2024, 13:14
Я бы на Вашем месте не делал имена файлов и папок на кириллице да еще и с пробелами...
0
0 / 0 / 0
Регистрация: 29.04.2018
Сообщений: 44
16.05.2024, 13:16  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
Я бы на Вашем месте не делал имена файлов и папок на кириллице да еще и с пробелами...
поменял прикола ради текст на английский. Проблема осталась
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,354
Записей в блоге: 3
16.05.2024, 13:19
Цитата Сообщение от serega99 Посмотреть сообщение
Подскажите, пожалуйста, как быть
не использовать какие-то непонятные левые библиотеки и работать с Excel-ем самостоятельно

Добавлено через 53 секунды
Цитата Сообщение от serega99 Посмотреть сообщение
поменял прикола ради текст на английский
тут не текст менять надо, а проект пересохранять с другим именем.

Добавлено через 1 минуту
и, по факту, ошибка к библиотеке никакого отношения не имеет...
0
0 / 0 / 0
Регистрация: 29.04.2018
Сообщений: 44
16.05.2024, 13:48  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
и, по факту, ошибка к библиотеке никакого отношения не имеет...
если убрать данный код и не подключать заголовочные файлы библиотеки вместе с скомпилированными файлами в проект, то ошибки не возникает. с латиницей проект также компилировался...
0
42 / 45 / 6
Регистрация: 21.10.2022
Сообщений: 560
Записей в блоге: 2
17.05.2024, 00:59
У меня тоже похожее было. Какой то глюк студии при создании прекопиляционных файлов. Выключил их и заработало нормально.
0
0 / 0 / 0
Регистрация: 29.04.2018
Сообщений: 44
17.05.2024, 09:35  [ТС]
В итоге обошелся ADO и OLE :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
void __fastcall TForm2::Button5Click(TObject *Sender)
{
  // Прямой доступ к компонентам
  if (!ListBox1 || !Label4) {
    ShowMessage("ListBox1 или Label4 не найдены.");
    return;
    }
 
  std::set<String> createdFiles;
    std::vector<String> errorFiles;
 
  for (int i = 0; i < ListBox1->Items->Count; ++i) {
    String item = ListBox1->Items->Strings[i];
    TStringList *words = new TStringList();
        words->Delimiter = ' ';
        words->DelimitedText = item;
 
    if (words->Count >= 3) {
      String firstWord = words->Strings[0];
 
      if (createdFiles.find(firstWord) == createdFiles.end()) {
                createdFiles.insert(firstWord);
                String filePath = Label4->Caption + "\\" + firstWord + ".xlsx";
 
                try {
                    Variant excelApp = CreateOleObject("Excel.Application");
                    Variant workbooks = excelApp.OlePropertyGet("Workbooks");
                    Variant workbook = workbooks.OleFunction("Add");
 
 
                    String sheetNames[15] = {
                        "Антивирусная защита",
                        "Версии Java",
                        "MQ, установленные на серверах",
                        "Серверы приложений",
                        "Описание БД",
                        "СУБД, установленные на серверах",
                        "ПО, установленные на серверах",
                        "ОС, установленные на серверах",
                        "Названия сетевых интерфейсов",
                        "Загрузка дисковых подсистем",
                        "Средняя загрузка ЦП",
                        "Доступность ПО",
                        "Назначения серверов",
                        "Виртуальные серверы",
                        "Физические серверы"
                    };
 
                    // Создаем листы в книге
          for (int j = 0; j < 15; ++j) {
            Variant newSheet = workbook.OlePropertyGet("Sheets").OleFunction("Add");
            newSheet.OlePropertySet("Name", sheetNames[j]);
          }
 
                    // Удаляем лишний лист "Лист1"
          Variant sheets = workbook.OlePropertyGet("Sheets");
          Variant sheet = sheets.OlePropertyGet("Item", 16);
          sheet.OleProcedure("Delete");
 
                    workbook.OleProcedure("SaveAs", filePath);
                    workbook.OleProcedure("Close", false);
                    excelApp.OleProcedure("Quit");
        }
                catch (const Exception &e) {
                    errorFiles.push_back(filePath + ": " + e.Message);
                }
                catch (...) {
                    errorFiles.push_back(filePath + ": unknown error");
                }
            }
        }
    delete words;
    }
 
    if (errorFiles.empty()) {
        ShowMessage("Все xlsx файлы успешно сохранены.");
    } else {
    String errorMsg = "Ошибки при сохранении следующих файлов:\n";
        for (const auto& file : errorFiles) {
      errorMsg += file + "\n";
        }
        ShowMessage(errorMsg);
    }
}
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,354
Записей в блоге: 3
17.05.2024, 10:31
Цитата Сообщение от serega99 Посмотреть сообщение
В итоге обошелся ADO и OLE
Вот и правильно. Тем более, что и эти "библиотеки" используют ровно те же самые методы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.05.2024, 10:31
Помогаю со студенческими работами здесь

Не могу подключить библиотеку
Здравствуйте. Я читаю книгу ЛаФОРЕ и там используется вот такая библиотека. #include &quot;msoftcon.h&quot; // для графических функций. В...

Не могу подключить библиотеку
Я скомпилировал либы через nmake и добавил директорию в доп. библиотеки и в доп. зависимости, а папку инклюд в доп. каталоги включаемых...

Не могу подключить библиотеку SFML
Здравствуйте форумчане,проблема такая,хочу подключить библиотеку SFML сделал все как в уроках, подключил все dll файлы но выдает ошибку

Не могу подключить dll библиотеку
Вообщем есть библиотека Visa32.dll и я не могу ее подключить. Так же есть два заголовочных файла - Visa.h и visatype.h. В про файле...

Не могу подключить графическую библиотеку страуструпа
Код: #include &quot;Graph.h&quot; #include &quot;GUI.h&quot; #include &quot;Point.h&quot; #include &quot;Simple_window.h&quot; #include &quot;Window.h&quot; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru