2015-10-16 2 views
1

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

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. 

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

+0

Рассматривали ли вы, что не хватает памяти, чтобы открыть файл в программе Excel? –

+0

Что я должен здесь попробовать? Есть ли какая-либо оптимизация, которая должна быть выполнена с помощью libxlsxwriter? –

ответ

1

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

Например:

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. 

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

Update: В новых версиях ошибка понятнее:

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

Что-то еще, чтобы иметь в виду, что вы должны вызывать функции 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); 
Смежные вопросы