Сбой экспорта в Excel в iOS с использованием libxlsxwriter

Кто-нибудь использовал libxlsxwriter для экспорта данных в Excel в iOS? Я получил библиотеку и работает. Ниже приведен код, который я пробовал.

lxw_workbook  *workbook  = new_workbook("demo.xlsx");
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);

int ret = worksheet_write_string(worksheet, 0, 0, "Hello", NULL);
ret = worksheet_write_number(worksheet, 1, 0, 123, NULL);

int ret1 = workbook_close(workbook);
if(LXW_CLOSE_ERROR_ZIP == ret1)
    NSLog(@"Failed");

Это постоянно терпит неудачу для меня в workbook_close();

Это сообщение об ошибке, которое я получаю

[ERROR][/path/packager.c:62]: Error opening zip file for xlsx
[ERROR][/path/workbook.c:1108]: Memory allocation failed.

Есть идеи, почему это происходит? Есть ли другая библиотека, которую я могу использовать?

2 ответа

Эти ошибки вводят в заблуждение. Обычно они генерируются, когда выходной файл или каталог недоступен для записи.

Например:

cd libxlsxwriter
make examples
./examples/hello
# Creates hello_world.xlsx

chmod -w hello_world.xlsx
./examples/hello

[ERROR][packager.c:62]: Error opening zip file for xlsx
[ERROR][workbook.c:1108]: Memory allocation failed.

Я посмотрю, смогу ли я добавить исправление в библиотеку, чтобы прояснить фактический источник ошибки.

Обновление: в более новых версиях ошибка яснее:

$ ./examples/hello
[ERROR] workbook_close(): Error creating 'hello_world.xlsx'. 
        Error = Permission denied

Следует также помнить, что вы должны вызывать функции libxlsxwriter со строковым кодированием, понятным для C. Я получал эту ошибку, пока не преобразовал все строки в вызовах libxlsxwriter в строки UTF8.

В вашем случае ваши призывы создать рабочую книгу и написать строку стали бы:

lxw_workbook  *workbook  = new_workbook(("demo.xlsx" as NSString).UTF8String);
...
int ret = worksheet_write_string(worksheet, 0, 0, ("Hello" as NSString).UTF8String, NULL);
Другие вопросы по тегам