Problem is if I read file for example test.xlsx using xlsxioreader C library and after that I immidietly trying to write into this file Im getting an error:
$ ./a
Sheetname: Sheet1
Read value: dasf
zip_close failed (2,13)
can't close zip archive : Renaming temporary file failed: Permission denied
Workbook looks like below
Sheet1 | -------- | -------- | | dasf | | | | |
So there is only ‘dasf’ string in A1 cell of ‘Sheet1’ worksheet.
I want wokbook to look like
1 | -------- | -------- | | test1 | | | test2 | test3 |
Code below
#include <xlsxio_write.h>
#include <xlsxio_read.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
xlsxiowriter writeHandle;
xlsxioreader readHandle;
xlsxioreadersheetlist sheetlist;
xlsxioreadersheet sheet;
const char* sheetname;
char *value;
//--------------------------------------------------- Read
if ((readHandle = xlsxioread_open("test.xlsx")) == NULL)
{
fprintf(stderr, "Error open .xlsx filen");
return 1;
}
if ((sheetlist = xlsxioread_sheetlist_open(readHandle)) != NULL)
{
sheetname = xlsxioread_sheetlist_next(sheetlist);
printf("Sheetname: %sn", sheetname);
}
if ((sheet = xlsxioread_sheet_open(readHandle, sheetname, XLSXIOREAD_SKIP_EMPTY_ROWS)) == NULL)
{
fprintf(stderr, "Error open sheetn");
return 1;
}
xlsxioread_sheet_next_row(sheet);
if ((value = xlsxioread_sheet_next_cell(sheet)) == NULL)
{
printf("Read nulln");
}
else
{
printf("Read value: %sn", value);
xlsxioread_free(value);
}
xlsxioread_sheet_close(sheet);
xlsxioread_close(readHandle);
//--------------------------------------------------- Write
if ((writeHandle = xlsxiowrite_open("test.xlsx", "1")) == NULL)
{
fprintf(stderr, "Error creating .xlsx filen");
return 1;
}
xlsxiowrite_add_cell_string(writeHandle, "test1");
xlsxiowrite_next_row(writeHandle);
xlsxiowrite_add_cell_string(writeHandle, "test2");
xlsxiowrite_add_cell_string(writeHandle, "test3");
xlsxiowrite_close(writeHandle);
return 0;
}
I’ve tried to wait some time before open file second time for writing by using sleep() function.
3
To solve this problem I just closed worksheet and worksheet list before closing workbook:
xlsxioread_sheet_close(sheet);
xlsxioread_sheetlist_close(sheetlist);
xlsxioread_close(readHandle);