/* only to test the compile and link phase: do we have 'em all? ... no, we don't, so it seems... */ void test_compile(void) { workbook *w = 0; worksheet *s = 0; const char *name = ""; char charbuf[5]; const unichar_t *uname = 0; font_t *f = 0; format_t *fmt = 0; xf_t *xf = 0; property_t prop = PROP_SUBJECT; unsigned16_t i16 = 0; unsigned32_t row = 0; unsigned32_t col = 0; range *r; cell_t *c = 0; double numval = 0.0; format_number_t fmtnum = FMT_CURRENCY8; halign_option_t ha = HALIGN_RIGHT; valign_option_t va = VALIGN_BOTTOM; txtori_option_t ori = ORI_90NOCLOCKTXT; color_name_t *color = 0; fill_option_t fill = FILL_HORIZ_LINES_THIN; bool b = 0; border_side_t side = BORDER_TOP; border_style_t style = BORDER_DOTTED; unsigned8_t i8 = 0; boldness_option_t fntboldness = BOLDNESS_HALF; underline_option_t fntunderline = UNDERLINE_SINGLE; script_option_t fntscript = SCRIPT_SUPER; w = xlsNewWorkbook(); xlsDeleteWorkbook(w); s = xlsWorkbookSheet(w, name); s = xlsWorkbookSheetW(w, uname); s = xlsWorkbookGetSheet(w, i16); f = xlsWorkbookFont(w, name); fmt = xlsWorkbookFormat(w, name); fmt = xlsWorkbookFormatW(w, uname); xf = xlsWorkbookxFormat(w); xf = xlsWorkbookxFormatFont(w, f); #ifdef HAVE_ICONV xlsWorkbookIconvInType(w, name); #endif xlsWorkbookProperty(w, prop, name); xlsWorkBookWindPosition(w, i16, i16); xlsWorkBookWindSize(w, i16, i16); xlsWorkBookFirstTab(w, i16); xlsWorkBookTabBarWidth(w, i16); xlsWorkbookDump(w, name); // Worksheet xlsWorksheetMakeActive(s); // Make this sheet the selected sheet c = xlsWorksheetFindCell(s, row, col); xlsWorksheetMerge(s, row, col, row, col); xlsWorksheetColwidth(s, col, i16, xf); xlsWorksheetRowheight(s, row, i16, xf); r = xlsWorksheetRangegroup(s, row, col, row, col); c = xlsWorksheetLabel(s, row, col, name, xf); c = xlsWorksheetLabelW(s, row, col, uname, xf); c = xlsWorksheetBlank(s, row, col, xf); c = xlsWorksheetNumberDbl(s, row, col, numval, xf); // 536870911 >= numval >= -536870912 c = xlsWorksheetNumberInt(s, row, col, 0, xf); #ifndef FALSE #define FALSE 0 #endif c = xlsWorksheetBoolean(s, row, col, FALSE, xf); c = xlsWorksheetError(s, row, col, XLERR_VALUE, xf); c = xlsWorksheetNote(s, row, col, name, name, xf); c = xlsWorksheetNoteW(s, row, col, uname, uname, xf); //c = xlsWorksheetFormula(s, row, col, expr, xf); // cell: xfi xlsCellFont(c, f); xlsCellFormat(c, fmtnum); xlsCellFormatP(c, fmt); xlsCellHalign(c, ha); xlsCellValign(c, va); xlsCellOrientation(c, ori); xlsCellFillfgcolor(c, *color); xlsCellFillbgcolor(c, *color); xlsCellFillstyle(c, fill); xlsCellLocked(c, b); xlsCellHidden(c, b); xlsCellWrap(c, b); xlsCellBorderstyle(c, side, style); xlsCellBordercolor(c, side, *color); xlsCellBordercolorIdx(c, side, i8); xlsCellFontname(c, name); // cell: font xlsCellFontheight(c, i16); xlsCellFontbold(c, fntboldness); xlsCellFontunderline(c, fntunderline); xlsCellFontscript(c, fntscript); xlsCellFontcolor(c, *color); //xlsCellFontattr(c, i16); xlsCellFontitalic(c, b); xlsCellFontstrikeout(c, b); xlsCellFontoutline(c, b); xlsCellFontshadow(c, b); xlsCellGetRow(c); xlsCellGetCol(c); xlsCellGetXFIndex(c); xlsCellSetXF(c, xf); // xformat xlsXformatSetFont(xf, f); xlsXformatGetFontIndex(xf); xlsXformatGetFont(xf); xlsXformatSetFormat(xf, fmtnum); xlsXformatSetFormatP(xf, fmt); xlsXformatGetFormatIndex(xf); xlsXformatGetFormat(xf); xlsXformatSetHAlign(xf, ha); xlsXformatGetHAlign(xf); xlsXformatSetVAlign(xf, va); xlsXformatGetVAlign(xf); xlsXformatSetTxtOrientation(xf, ori); xlsXformatGetTxtOrientation(xf); xlsXformatSetFillFGColor(xf, *color); xlsXformatGetFillFGColorIdx(xf); xlsXformatSetFillBGColor(xf, *color); xlsXformatGetFillBGColorIdx(xf); xlsXformatSetFillStyle(xf, fill); xlsXformatGetFillStyle(xf); xlsXformatSetLocked(xf, b); xlsXformatIsLocked(xf); xlsXformatSetHidden(xf, b); xlsXformatIsHidden(xf); xlsXformatSetWrap(xf, b); xlsXformatIsWrap(xf); xlsXformatSetCellMode(xf, b); xlsXformatIsCell(xf); xlsXformatSetBorderStyle(xf, side, style); xlsXformatSetBorderColor(xf, side, *color); xlsXformatSetBorderColorIdx(xf, side, i8); xlsXformatGetBorderStyle(xf, side); xlsXformatGetBorderColorIdx(xf, side); //xlsXformatGetSignature(xf); // Font xlsFontSetName(f, name); xlsFontGetName(f, charbuf, sizeof(charbuf)); xlsFontSetHeight(f, i16); xlsFontGetHeight(f); xlsFontSetBoldStyle(f, fntboldness); xlsFontGetBoldStyle(f); xlsFontSetUnderlineStyle(f, fntunderline); xlsFontGetUnderlineStyle(f); xlsFontSetScriptStyle(f, fntscript); xlsFontGetScriptStyle(f); xlsFontSetColor(f, *color); xlsFontGetColorIdx(f); xlsFontSetItalic(f, b); xlsFontSetStrikeout(f, b); #if defined(DEPRECATED) xlsFontSetAttributes(f, i16); #endif xlsFontGetAttributes(f); xlsFontSetOutline(f, b); xlsFontSetShadow(f, b); }
int main(int argc, char **argv) { FILE *outfile; SDDS_TABLE SDDS_table; SDDS_LAYOUT *layout; COLUMN_DEFINITION *coldef; PARAMETER_DEFINITION *pardef; ARRAY_DEFINITION *arraydef; long list_request; char *input, *output; long i, j, i_arg, append_units, nrows, ntable; SCANNED_ARG *s_arg; char *text, *contents, *delimiter; long verbose=0, all=0, nvariableparms=0, excel=0, line=0; void *data; unsigned long pipeFlags; #ifdef USE_XLS workbook *w; worksheet *ws; #endif int ret; char sheet[256]; char buffer[5]; SDDS_RegisterProgramName(argv[0]); list_request = -1; input = output = NULL; append_units = 0; delimiter = DELIMITER; pipeFlags = 0; argc = scanargs(&s_arg, argc, argv); if (argc==1) bomb(NULL, USAGE); for (i_arg=1; i_arg<argc; i_arg++) { if (s_arg[i_arg].arg_type==OPTION) { switch (match_string(s_arg[i_arg].list[0], option, N_OPTIONS, 0)) { case SET_DELIMITER: if (s_arg[i_arg].n_items<2) SDDS_Bomb("Invalid -delimiter syntax"); delimiter = s_arg[i_arg].list[1]; break; case SET_ALL: all = 1; break; case SET_EXCEL: #ifdef USE_XLS excel = 1; #else SDDS_Bomb("-excel option is not available becuase sdds2spreadsheet was not compiled with xlslib support"); #endif break; case SET_VERBOSE: verbose = 1; break; case SET_PIPE: if (!processPipeOption(s_arg[i_arg].list+1, s_arg[i_arg].n_items-1, &pipeFlags)) SDDS_Bomb("invalid -pipe syntax"); break; default: SDDS_Bomb(strcat("Unknown option: ", s_arg[i_arg].list[0])); break; } } else { if (input==NULL) input = s_arg[i_arg].list[0]; else if (output==NULL) output = s_arg[i_arg].list[0]; else SDDS_Bomb("too many filenames"); } } processFilenames("sdds2spreadsheet", &input, &output, pipeFlags, 0, NULL); if (output) { if (!excel) { outfile=fopen(output,"w"); if(!outfile) SDDS_Bomb(strcat("Can't open output file ", output)); } } else { if (excel) { SDDS_Bomb("-pipe=out and -excel options cannot be used together"); } outfile = stdout; } if (input && !excel) fprintf(outfile,"Created from SDDS file: %s\n", input); if (!SDDS_InitializeInput(&SDDS_table, input)) { SDDS_PrintErrors(stderr, SDDS_VERBOSE_PrintErrors); exit(1); } layout = &SDDS_table.layout; /* Description */ if(verbose && input) fprintf(stderr, "\nfile %s is in SDDS protocol version %" PRId32 "\n", input, layout->version); if (!SDDS_GetDescription(&SDDS_table, &text, &contents)) SDDS_PrintErrors(stderr, SDDS_VERBOSE_PrintErrors|SDDS_EXIT_PrintErrors); if (text) if (verbose) fprintf(stderr, "description: %s\n", text); if (!excel) fprintf(outfile,"%s%s\n",text?text:"No description",delimiter); if (contents) if (verbose) fprintf(stderr, "contents: %s\n", contents); if (!excel) fprintf(outfile,"%s%s\n",contents?contents:"No description",delimiter); if (layout->data_mode.mode==SDDS_ASCII) { if (verbose) { fprintf(stderr, "\ndata is ASCII with %" PRId32 " lines per row and %" PRId32 " additional header lines expected.\n", layout->data_mode.lines_per_row, layout->data_mode.additional_header_lines); fprintf(stderr, "row counts: %s \n", layout->data_mode.no_row_counts?"no":"yes"); } } else if (verbose) fprintf(stderr, "\ndata is binary\n"); /* Columns */ if (layout->n_columns) { if(verbose) { fprintf(stderr, "\n%" PRId32 " columns of data:\n", layout->n_columns); fprintf(stderr, "NAME UNITS SYMBOL FORMAT TYPE FIELD DESCRIPTION\n"); fprintf(stderr, " LENGTH\n"); } if (all && !excel) fprintf(outfile, "\nColumns%s\nName%sUnits%sSymbol%sFormat%sType%sField Length%sDescription%s\n", delimiter, delimiter, delimiter, delimiter, delimiter, delimiter, delimiter, delimiter); for (i=0; i<layout->n_columns; i++) { coldef = layout->column_definition+i; if(verbose) fprintf(stderr, "%-15s %-15s %-15s %-15s %-7s %-7" PRId32 " %s\n", coldef->name, coldef->units?coldef->units:"", coldef->symbol?coldef->symbol:"", coldef->format_string?coldef->format_string:"", SDDS_type_name[coldef->type-1], coldef->field_length, coldef->description?coldef->description:""); if(all && !excel) fprintf(outfile,"%s%s%s%s%s%s%s%s%s%s%-7" PRId32 "%s%s%s\n", coldef->name, delimiter, coldef->units?coldef->units:"", delimiter, coldef->symbol?coldef->symbol:"", delimiter, coldef->format_string?coldef->format_string:"", delimiter, SDDS_type_name[coldef->type-1], delimiter, coldef->field_length, delimiter, coldef->description?coldef->description:"", delimiter); } } /* Parameters */ if (layout->n_parameters) { if (verbose) { fprintf(stderr, "\n%" PRId32 " parameters:\n", layout->n_parameters); fprintf(stderr, "NAME UNITS SYMBOL TYPE DESCRIPTION\n"); } if(all && !excel) fprintf(outfile,"\nParameters%s\nName%sFixedValue%sUnits%sSymbol%sType%sDescription%s\n", delimiter, delimiter, delimiter, delimiter, delimiter, delimiter, delimiter); for (i=0; i<layout->n_parameters; i++) { pardef = layout->parameter_definition+i; if(!pardef->fixed_value) { nvariableparms++; if(!all) continue; } if(verbose) fprintf(stderr, "%-19s %-19s %-19s %-19s %s\n", pardef->name, pardef->units?pardef->units:"", pardef->symbol?pardef->symbol:"", SDDS_type_name[pardef->type-1], pardef->description?pardef->description:""); if (!excel) { if(all) fprintf(outfile,"%s%s%s%s%s%s%s%s%s%s%s%s\n", pardef->name, delimiter, pardef->fixed_value?pardef->fixed_value:"", delimiter, pardef->units?pardef->units:"", delimiter, pardef->symbol?pardef->symbol:"", delimiter, SDDS_type_name[pardef->type-1], delimiter, pardef->description?pardef->description:"", delimiter); else fprintf(outfile,"%s%s%s%s%s\n", pardef->name, delimiter, delimiter, pardef->fixed_value?pardef->fixed_value:"", delimiter); } } } /* Arrays */ if (layout->n_arrays && all) { if(verbose) { fprintf(stderr, "\n%" PRId32 " arrays of data:\n", layout->n_arrays); fprintf(stderr, "NAME UNITS SYMBOL" " FORMAT TYPE FIELD GROUP DESCRIPTION\n"); fprintf(stderr, " LENGTH NAME\n"); } if (!excel) { fprintf(outfile,"\nArrays%s\nName%sUnits%sSymbol%sFormat%sType%sField Length%sGroup Name%sDescription%s\n", delimiter, delimiter, delimiter, delimiter, delimiter, delimiter, delimiter, delimiter, delimiter); } for (i=0; i<layout->n_arrays; i++) { arraydef = layout->array_definition+i; if(verbose) fprintf(stderr, "%-15s %-15s %-15s %-7s %-8s*^%-5" PRId32 " %-7" PRId32 " %-15s %s\n", arraydef->name, arraydef->units, arraydef->symbol, arraydef->format_string, SDDS_type_name[arraydef->type-1], arraydef->dimensions, arraydef->field_length, arraydef->group_name, arraydef->description); if (!excel) { fprintf(outfile,"%s%s%s%s%s%s%s%s%s*^%-5" PRId32 "%s%-7" PRId32 "%s%s%s%s%s\n", arraydef->name, delimiter, arraydef->units, delimiter, arraydef->symbol, delimiter, arraydef->format_string, delimiter, SDDS_type_name[arraydef->type-1], arraydef->dimensions, delimiter, arraydef->field_length, delimiter, arraydef->group_name, delimiter, arraydef->description, delimiter); } } } /* Associates */ /* if (layout->n_associates && all) { if(verbose) { fprintf(stderr, "\n%ld associates:\n", layout->n_associates); fprintf(stderr, "SDDS FILENAME PATH CONTENTS DESCRIPTION\n"); } fprintf(outfile,"\nAssociates%s\nType%sFilename%sPath%sContents%sDescription%s\n", delimiter, delimiter, delimiter, delimiter, delimiter, delimiter); for (i=0; i<layout->n_associates; i++) if(verbose) fprintf(stderr, "%-5s %-19s %-29s %-19s %s\n", layout->associate_definition[i].sdds?"SDDS":"Non-SDDS", layout->associate_definition[i].filename, layout->associate_definition[i].path, layout->associate_definition[i].contents, layout->associate_definition[i].description); fprintf(outfile,"%s%s%s%s%s%s%s%s%s%s\n", layout->associate_definition[i].sdds?"yes":"no", delimiter, layout->associate_definition[i].filename, delimiter, layout->associate_definition[i].path, delimiter, layout->associate_definition[i].contents, delimiter, layout->associate_definition[i].description, delimiter); } */ #ifdef USE_XLS w = xlsNewWorkbook(); #ifdef __APPLE__ xlsWorkbookIconvInType(w, "UCS-4-INTERNAL"); #endif #endif /* Process tables */ while ((ntable=SDDS_ReadTable(&SDDS_table))>0) { line=0; #ifdef USE_XLS if (excel) { sprintf(sheet, "Sheet%d", ntable); ws = xlsWorkbookSheet(w, sheet); } else fprintf(outfile,"\nTable %ld\n",ntable); #else fprintf(outfile,"\nTable %ld\n",ntable); #endif /* Variable parameters */ if (nvariableparms) { for (i=0; i<layout->n_parameters; i++) { pardef = layout->parameter_definition+i; if(pardef->fixed_value) continue; if (!(data=SDDS_GetParameter(&SDDS_table, pardef->name, NULL))) { SDDS_PrintErrors(stderr, SDDS_VERBOSE_PrintErrors); exit(1); } #ifdef USE_XLS if (excel) { xlsWorksheetLabel(ws, line, 0, pardef->name, NULL); switch(pardef->type) { case SDDS_DOUBLE: xlsWorksheetNumberDbl(ws, line, 1, *((double*)data), NULL); break; case SDDS_FLOAT: xlsWorksheetNumberDbl(ws, line, 1, *((float*)data), NULL); break; case SDDS_ULONG: xlsWorksheetNumberInt(ws, line, 1, *((uint32_t*)data), NULL); break; case SDDS_LONG: xlsWorksheetNumberInt(ws, line, 1, *((int32_t*)data), NULL); break; case SDDS_USHORT: xlsWorksheetNumberInt(ws, line, 1, *((unsigned short*)data), NULL); break; case SDDS_SHORT: xlsWorksheetNumberInt(ws, line, 1, *((short*)data), NULL); break; case SDDS_STRING: xlsWorksheetLabel(ws, line, 1, *((char**)data), NULL); break; case SDDS_CHARACTER: sprintf(buffer, "%c", *((char*)data)); xlsWorksheetLabel(ws, line, 1, buffer, NULL); break; default: break; } line++; } else { #endif fprintf(outfile,"%s%s%s",pardef->name,delimiter,delimiter); SDDS_PrintTypedValue(data, 0, pardef->type, NULL, outfile, 0); fprintf(outfile,"%s\n",delimiter); #ifdef USE_XLS } #endif } line++; } /* Columns */ if (layout->n_columns) { SDDS_SetColumnFlags(&SDDS_table, 1); SDDS_SetRowFlags(&SDDS_table, 1); if ((nrows=SDDS_CountRowsOfInterest(&SDDS_table))<0) { SDDS_PrintErrors(stderr, SDDS_VERBOSE_PrintErrors); exit(1); } for (i=0; i<layout->n_columns; i++) { coldef = layout->column_definition+i; #ifdef USE_XLS if (excel) { xlsWorksheetLabel(ws, line, i, coldef->name, NULL); } else fprintf(outfile,"%s%s",coldef->name,delimiter); #else fprintf(outfile,"%s%s",coldef->name,delimiter); #endif } line++; if (!excel) fprintf(outfile,"\n"); if (nrows) { for (j=0; j<nrows; j++) { for (i=0; i<layout->n_columns; i++) { coldef = layout->column_definition+i; if (!(data=SDDS_GetValue(&SDDS_table, coldef->name,j,NULL))) { SDDS_PrintErrors(stderr, SDDS_VERBOSE_PrintErrors); exit(1); } #ifdef USE_XLS if (excel) { switch(coldef->type) { case SDDS_DOUBLE: xlsWorksheetNumberDbl(ws, line, i, *((double*)data), NULL); break; case SDDS_FLOAT: xlsWorksheetNumberDbl(ws, line, i, *((float*)data), NULL); break; case SDDS_ULONG: xlsWorksheetNumberInt(ws, line, i, *((uint32_t*)data), NULL); break; case SDDS_LONG: xlsWorksheetNumberInt(ws, line, i, *((int32_t*)data), NULL); break; case SDDS_USHORT: xlsWorksheetNumberInt(ws, line, i, *((unsigned short*)data), NULL); break; case SDDS_SHORT: xlsWorksheetNumberInt(ws, line, i, *((short*)data), NULL); break; case SDDS_STRING: xlsWorksheetLabel(ws, line, i, *((char**)data), NULL); break; case SDDS_CHARACTER: sprintf(buffer, "%c", *((char*)data)); xlsWorksheetLabel(ws, line, i, buffer, NULL); break; default: break; } } else { #endif switch(coldef->type) { case SDDS_DOUBLE: fprintf(outfile, "%.*g", DBL_DIG, *((double*)data)); break; case SDDS_FLOAT: fprintf(outfile, "%.*g", FLT_DIG, *((float*)data)); break; default: SDDS_PrintTypedValue(data, 0, coldef->type, NULL, outfile, 0); break; } fprintf(outfile,delimiter); #ifdef USE_XLS } #endif } if (!excel) fprintf(outfile,"\n"); line++; } } } } #ifdef USE_XLS ret = xlsWorkbookDump(w, output); xlsDeleteWorkbook(w); #endif /* QUIT: */ fflush(stdout); if (!SDDS_Terminate(&SDDS_table)) { SDDS_PrintErrors(stderr, SDDS_VERBOSE_PrintErrors); exit(1); } return(0); }
int main(int argc, char *argv[]) { workbook *w; worksheet *ws; int ret; char check[40], *checkP = check; char fileName[128]; fileName[0] = 0; // Used for internal testing if(argc == 2) { #ifdef _X_DEBUG_ chdir(argv[1]); #endif strcpy(fileName, argv[1]); strcat(fileName, "/"); } strcat(fileName, "mainC.md5"); { FILE *fp = fopen(fileName, "r"); if(fp) { fscanf(fp, "%s", checkP); fclose(fp); } else { strcpy(checkP, "00000000000000000000000000000000"); } //printf("MD5 = %s\n", checkP); } xlslib_register_assert_reporter(&my_xlslib_assertion_reporter); w = xlsNewWorkbook(); ws = xlsWorkbookSheet(w, "xlslib C"); #ifdef __APPLE__ xlsWorkbookIconvInType(w, "UCS-4-INTERNAL"); #endif xlsWorksheetNumberDbl(ws, (unsigned16_t)1, (unsigned16_t)1, 1.0, NULL); xlsWorksheetNumberDbl(ws, (unsigned16_t)2, (unsigned16_t)1, 2.0, NULL); xlsWorksheetNumberDbl(ws, (unsigned16_t)3, (unsigned16_t)1, 3.0, NULL); xlsWorksheetLabel(ws, 4, 1, "ASCII text", NULL); writeUnicodeLabel(ws, 5, 1); ret = xlsWorkbookDump(w, "testC.xls"); // printf(" # saved it ret=%d errno=%s\n", ret, strerror(errno)); xlsDeleteWorkbook(w); if (ret != NO_ERRORS) { fprintf(stderr, "%s failed: I/O failure %d.\n", argv[0], ret); return EXIT_FAILURE; } if ((checkP = check_file("testC.xls", checkP))) { fprintf(stderr, "%s failed: MD5 of generated XLS mismatch or I/O failure.\n", argv[0]); if(argc == 2) { FILE *fp = fopen(fileName, "w"); if(fp) { fprintf(fp, "%s\n", checkP); printf("UPDATE MD5 = %s\n", checkP); fclose(fp); } else { printf("FAILED TO WRITE MD5\n"); } } return EXIT_FAILURE; } return EXIT_SUCCESS; }