Cześć!
Mam taki problem. Próbuję stworzyć plik .xls
, za pomocą biblioteki xlsLib
. Problem polega na tym, że przekazując metodzie, zapisującej tekst do komórki arkusza, tekst z polskimi znakami (jako char *
) dostaję komunikat w komórce arkusza, że nastąpił błąd konwersji ( iconv failed!
).
Próbowałem użyć wstring
, jednak teraz dostaję komunikat od kompilatora: Illegal byte sequence
w miejscach, gdzie były polskie znaki.
Załączę kod:
#include <xlslib.h>
#include <string>
using namespace xlslib_core;
using namespace std;
void utworzNaglowekTabeli(worksheet * arkusz);
int main()
{
workbook nowySkoroszyt;
worksheet * nowyArkusz = nowySkoroszyt.sheet("Arkusz Testowy");
utworzNaglowekTabeli(nowyArkusz);
if (nowySkoroszyt.Dump("Proba.xls") != NO_ERRORS)
cout << "BŁĄD" << endl;
return 0;
}
void utworzNaglowekTabeli(worksheet * arkusz)
{
wstring tytulyKolumn[14] =
{L"Od kogo", L"U kogo", L"Narodowość",
L"Rodzaj umowy", L"Nazwisko", L"Imię",
L"Stanowisko", L"Etat", L"Zatr. od", L"Zatr. do",
L"Telefon", L"Stopień", L"Termin", L"Do kiedy badanie"};
wstring tytulyKomorekScalonych[3] =
{L"Pracodawca", L"Okres zatrudnienia", L"Niepełnosprawność"};
arkusz->merge(0, 0, 0, 1);
arkusz->merge(0, 8, 0, 9);
arkusz->merge(0, 11, 0, 12);
arkusz->label(0, 0, tytulyKomorekScalonych[0], NULL);
arkusz->label(0, 8, tytulyKomorekScalonych[1], NULL);
arkusz->label(0, 11, tytulyKomorekScalonych[2], NULL);
for (int i = 0; i < 14; i++)
arkusz->label(1, i, tytulyKolumn[i], NULL);
}
Komunikat błędu:
$ g++ test2.cpp -I /xlslib/xlslib/src/ -lxls -liconv -o test.exe
test2.cpp: In function 'void utworzNaglowekTabeli(xlslib_core::worksheet*)':
test2.cpp:31:27: error: converting to execution character set: Illegal byte sequence
{L"Od kogo", L"U kogo", L"Narodowo▒▒",
^~~~~~~~~~~~~
test2.cpp:32:33: error: converting to execution character set: Invalid argument
L"Rodzaj umowy", L"Nazwisko", L"Imi▒",
^~~~~~~
test2.cpp:34:15: error: converting to execution character set: Invalid argument
L"Telefon", L"Stopie▒", L"Termin", L"Do kiedy badanie"};
^~~~~~~~~~
test2.cpp:37:42: error: converting to execution character set: Illegal byte sequence
{L"Pracodawca", L"Okres zatrudnienia", L"Niepe▒nosprawno▒▒"};
^~~~~~~~~~~~~~~~~~~~
Proszę o pomoc, dzięki.
Michał.