1

有没有人在 iOS 中使用 libxlsxwriter 将数据导出到 Excel?我启动并运行了图书馆。下面给出的是我尝试过的代码。

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.

知道为什么会这样吗?还有其他我可以使用的库吗?

4

2 回答 2

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.

我会看看我是否可以向库添加一个修复程序,以使错误的实际来源更清楚。

更新:在较新的版本中,错误更清楚:

$ ./examples/hello
[ERROR] workbook_close(): Error creating 'hello_world.xlsx'. 
        Error = Permission denied
于 2015-10-19T07:14:20.043 回答
1

要记住的另一件事是,您应该使用 C 可以理解的字符串编码来调用 libxlsxwriter 函数。直到我将调用 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);
于 2015-11-03T18:34:55.247 回答