ImportOPJ::ImportOPJ(ApplicationWindow *app, const QString& filename) : mw(app) { OPJFile opj((char *)filename.latin1()); parse_error = opj.Parse(); importTables(opj); }
int main(int argc, char *argv[]) { if(argc != 2) { printf("Usage : ./opj2dat <file.opj>\n"); return -1; } printf("opj2dat %s, Copyright (C) 2008 Stefan Gerlach\n",LIBORIGIN_VERSION_STRING); if(!strcmp(argv[1],"-v")) return 0; OriginFile opj(argv[1]); int status = opj.parse(); printf("Parsing status = %d\n",status); printf("OPJ PROJECT \"%s\" VERSION = %.2f\n",argv[1],opj.version()); printf("number of spreadsheets = %d\n",opj.spreadCount()); printf("number of matrixes = %d\n",opj.matrixCount()); printf("number of functions = %d\n",opj.functionCount()); printf("number of graphs = %d\n",opj.graphCount()); printf("number of notes = %d\n",opj.noteCount()); for (unsigned int s=0;s<opj.spreadCount();s++) { Origin::SpreadSheet spread = opj.spread(s); int columnCount=spread.columns.size(); printf("Spreadsheet %d :\n", s+1); printf(" Name: %s\n",spread.name.c_str()); printf(" Label: %s\n",spread.label.c_str()); printf(" Columns: %d\n",columnCount); for (int j=0;j<columnCount;j++) { Origin::SpreadColumn column = spread.columns[j]; printf(" Column %d : %s / type : %d, rows : %d\n", j+1,column.name.c_str(),column.type,spread.maxRows); } FILE *out; // char * filename; int ioret; // RKS - why the different behaviour on Windows to unix? // RKS - also previous code leaks //#ifndef WIN32 // ioret=asprintf(&filename,"%s.%d.dat",argv[1],s+1); //#else // ioret=asprintf(&filename,"%s.%d.dat",basename(argv[1]),s+1); //#endif std::ostringstream os; os<<argv[1]<<"."<<s+1<<".dat"; printf("saved to %s\n",os.str().c_str()); if((out=fopen(os.str().c_str(),"w")) == NULL ) { printf("Could not open %s",os.str().c_str()); return -1; } // header for (int j=0;j<columnCount;j++) { fprintf(out,"%s ",spread.columns[j].name.c_str()); printf("%s ",spread.columns[j].name.c_str()); } fprintf(out,"\n"); printf("\n Data: \n"); // data for (int i=0;i<(int)spread.maxRows;i++) { for (int j=0;j<columnCount;j++) { if (i<(int)spread.columns[j].data.size()) { Origin::variant value=spread.columns[j].data[i]; if(spread.columns[j].type == Origin::SpreadColumn::Label) { fprintf(out,"%s ",boost::get<string>(spread.columns[j].data[i]).c_str()); } else { double v=0.; if (value.type() == typeid(double)) { v = boost::get<double>(value); if(fabs(v)>2.0e-300) { fprintf(out,"%g ",v); } } if (value.type() == typeid(string)) { fprintf(out,"%s ",boost::get<string>(value).c_str()); } } } } fprintf(out,"\n"); } fclose(out); } return 0; }