【问题标题】:Export to Excel failing in iOS using libxlsxwriter使用 libxlsxwriter 在 iOS 中导出到 Excel 失败
【发布时间】:2015-10-16 18:17:32
【问题描述】:

有没有人在 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.

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

【问题讨论】:

  • 您是否考虑过内存不足,无法打开 Excel 文件?
  • 我应该在这里尝试什么?是否需要对 libxlsxwriter 进行任何优化?

标签: ios xcode excel xlsx libxlsxwriter


【解决方案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);

【讨论】:

    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多