#include "machine.h"Include dependency graph for intreadxls.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.
Functions | |
| int C2F() | intreadxls (char *fname, long lfn) |
| int C2F() | intopenxls (char *fname, long lfn) |
Definition at line 101 of file intreadxls.c.
References C2F, CheckLhs, CheckRhs, cluni0(), CreateVar, CreateVarFromPtr, cstk, fd, fname, FREE, getenv(), GetRhsVar, i, ierr, int, istk, L, LhsVar, m1, mopen(), n1, NULL, OLE_OK, OLEER_INSANE_OLE_FILE, OLEER_LOADFAT_BAD_BOUNDARY, OLEER_MINIFAT_READ_FAIL, OLEER_NO_INPUT_FILE, OLEER_NOT_OLE_FILE, OLEER_PROPERTIES_READ_FAIL, putlhsvar(), res, result, Rhs, ripole(), stk, xls_basename(), and xls_open().
Referenced by C2F().
00102 { 00103 #undef IN 00104 int i,k,m1,n1,l1,l2,one=1,fd,f_swap=0; 00105 int ierr,ns,result; 00106 double res; 00107 char **sst=NULL; 00108 char **Sheetnames=NULL; 00109 int *Abspos=NULL; 00110 int nsheets; 00111 char IN[256],TMP[256]; 00112 char sep[2]; 00113 #ifdef _MSC_VER 00114 sep[0]='\\'; 00115 #else 00116 sep[0]='/'; 00117 #endif 00118 sep[1]='\0'; 00119 00120 CheckLhs(4,4); 00121 CheckRhs(1,1); 00122 00123 /* checking variable file */ 00124 GetRhsVar(1,"c",&m1,&n1,&l1); 00125 C2F(cluni0)(cstk(l1), IN, &ns,(long int) (m1*n1),256L); 00126 00127 strcpy(TMP,getenv("TMPDIR")); 00128 00129 strcat(TMP,sep); 00130 strcat(TMP,xls_basename(IN)); 00131 result=ripole(IN, TMP, 0, 0); 00132 if (result != OLE_OK) { 00133 if (result == OLEER_NO_INPUT_FILE) 00134 Scierror(999,"%s :There is no file %s \r\n",fname,IN); 00135 else if(result == OLEER_NOT_OLE_FILE || 00136 result == OLEER_INSANE_OLE_FILE || 00137 result == OLEER_LOADFAT_BAD_BOUNDARY || 00138 result == OLEER_MINIFAT_READ_FAIL || 00139 result == OLEER_PROPERTIES_READ_FAIL) 00140 Scierror(999,"%s :file %s is not an ole2 file\r\n",fname,IN); 00141 else if(result == -1) 00142 Scierror(999,"%s :file %s cannot be opened\r\n",fname,IN); 00143 00144 return 0; 00145 } 00146 strcat(TMP,sep); 00147 strcat(TMP,"Workbook"); 00148 C2F(mopen)(&fd, TMP,"rb", &f_swap, &res, &ierr); 00149 if (ierr != 0) 00150 { 00151 Scierror(999,"%s :There is no xls stream in the ole2 file %s \r\n",fname,IN); 00152 return 0; 00153 } 00154 CreateVar(Rhs+1,"i",&one,&one,&l2); 00155 *istk(l2)=fd; /* logical unit */ 00156 00157 xls_open(&ierr, &fd, &sst ,&ns, &Sheetnames, &Abspos,&nsheets); 00158 /*return *err: 00159 0 = OK 00160 1 = not an OLE file 00161 2 = no Workbook included 00162 3 = memory allocation problem 00163 4 = incorrect file 00164 5 = not a BIFF8 xls file 00165 */ 00166 if (ierr == 1) 00167 { 00168 Scierror(999,"%s :Not an ole2 file \r\n",fname); 00169 return 0; 00170 } 00171 else if (ierr == 2) 00172 { 00173 Scierror(999,"%s : the file has no Workbook directory \r\n",fname); 00174 return 0; 00175 } 00176 else if (ierr == 3) 00177 { 00178 Scierror(999,"%s : impossible to alloc enough memory \r\n",fname); 00179 return 0; 00180 } 00181 else if (ierr == 4) 00182 { 00183 Scierror(990,"%s : incorrect or corrupted file \r\n",fname); 00184 return 0; 00185 } 00186 else if (ierr == 3) 00187 { 00188 Scierror(999,"%s : Only BIFF8 file format is handled \r\n",fname); 00189 return 0; 00190 } 00191 00192 if (ns != 0) 00193 { 00194 /* Create a typed list to return the properties */ 00195 CreateVarFromPtr(Rhs+2,"S", &one, &ns, sst); 00196 for (k=0;k<ns;k++) 00197 { 00198 if ( (sst) && (sst[k])) 00199 { 00200 FREE(sst[k]); 00201 sst[k]=NULL; 00202 } 00203 } 00204 if (sst) 00205 { 00206 FREE(sst); 00207 sst=NULL; 00208 } 00209 } 00210 else 00211 CreateVar(Rhs+2,"d",&ns,&ns,&l2); 00212 00213 if (nsheets != 0) 00214 { 00215 /* Create a typed list to return the properties */ 00216 CreateVarFromPtr(Rhs+3,"S", &one, &nsheets, Sheetnames); 00217 00218 if (Sheetnames) 00219 { 00220 for (k=0;k<nsheets;k++) 00221 { 00222 if (Sheetnames[k]) 00223 { 00224 FREE(Sheetnames[k]); 00225 Sheetnames[k]=NULL; 00226 } 00227 } 00228 FREE(Sheetnames); 00229 Sheetnames=NULL; 00230 } 00231 00232 00233 00234 CreateVar(Rhs+4,"d", &one, &nsheets, &l2); 00235 for (i=0;i<nsheets;i++) *stk(l2+i)=Abspos[i]; 00236 if (Abspos) 00237 { 00238 FREE(Abspos); 00239 Abspos=NULL; 00240 } 00241 } 00242 else { 00243 CreateVar(Rhs+3,"d",&nsheets,&nsheets,&l2); 00244 CreateVar(Rhs+4,"d",&nsheets,&nsheets,&l2); 00245 } 00246 00247 LhsVar(1)= Rhs+1; 00248 LhsVar(2)= Rhs+2; 00249 LhsVar(3)= Rhs+3; 00250 LhsVar(4)= Rhs+4; 00251 C2F(putlhsvar)(); 00252 return 0; 00253 }
Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 28 of file intreadxls.c.
References C2F, CheckLhs, CheckRhs, CreateVar, CreateVarFromPtr, data, fd, fname, FREE, GetRhsVar, ierr, ind, int, LhsVar, M, m1, N, n1, NULL, pos, putlhsvar(), Rhs, stk, and xls_read().
Referenced by C2F().
00029 { 00030 int m1,n1,l1,zero=0,ierr; 00031 double *data=NULL; 00032 int *ind=NULL; 00033 int M,N,MN; 00034 int pos,fd; 00035 00036 CheckLhs(2,2); 00037 CheckRhs(2,2); 00038 00039 /* checking variable Pos */ 00040 GetRhsVar(1,"d",&m1,&n1,&l1); 00041 fd=(int)*stk(l1); 00042 GetRhsVar(2,"d",&m1,&n1,&l1); 00043 pos=(int)*stk(l1); 00044 00045 xls_read(&fd,&pos,&data, &ind, &N, &M, &ierr); 00046 if (ierr == 1) 00047 { 00048 Scierror(999,"%s :Not enough memory to allocate results \r\n",fname); 00049 return 0; 00050 } 00051 else if(ierr == 2) 00052 { 00053 Scierror(999,"%s :Failed to read expected data, may be invalid xls file \r\n",fname); 00054 return 0; 00055 } 00056 else if(ierr == 3) 00057 { 00058 Scierror(999,"%s :End of File \r\n",fname); 00059 return 0; 00060 } 00061 00062 /* sciprint("readxls %d %d %d\n",M,N,ierr);*/ 00063 00064 MN=M*N; 00065 if (MN==0) 00066 { 00067 CreateVar(Rhs+1, "d", &zero,&zero, &l1); 00068 CreateVar(Rhs+2, "d", &zero,&zero, &l1); 00069 } 00070 00071 else 00072 { 00073 CreateVarFromPtr(Rhs+1, "d", &N,&M, &data); 00074 CreateVarFromPtr(Rhs+2, "i", &N,&M, &ind); 00075 FREE(data); 00076 FREE(ind); 00077 } 00078 00079 00080 LhsVar(1)= Rhs+1; 00081 LhsVar(2)= Rhs+2; 00082 C2F(putlhsvar)(); 00083 00084 return 0; 00085 }
Here is the call graph for this function:

Here is the caller graph for this function:

1.5.1