// Чтение  данных из Excel и запись в таблицу

var Tabl; // объект класса для работы таблицей

 
  int nStart = 10;  // стартовый номер читаемой строки

  var CTabl = CreateObject("CurPrnTbl");



int len=256;
char str[len];


ReadWrit(array_param)
{
   int cnt_param = array_param[0];    
   int tip       = array_param[1];    
   int tip1      = array_param[2];

   int exl;

  if ( tip == 0)
    {
      if ( tip1 == 0) exl = 0;
      else exl = 1;
    }

  if ( tip == 1)
    {
      if ( tip1 == 0) exl = 2;
      else exl = 3;
    }


   switch(exl)
   {

      case 0:
         return ReadExc();
      case 1:
         return ReadExc2();
      case 2:
         return Writ();
      case 3:
         return Writ2();

   }
 
}



ReadExc()
{

  var xls=CreateObject("Excel.Application");  // создаем объект Excel.Application, т.е. запускаем Excel, если он установлен конечно
  char Dir[len];                              // строка для текущей директории
  GetCurrentDirectory(len,Dir);               // получаем текущую директорию (это корень каталога ZPL из которого запустили АМБу)
  string nm="TAB3.xls";
  var WorkDir ="C:\\Tabel\\";

  xls.Workbooks.Add(WorkDir+nm);              // открываем в Excel'е наш файл prim15.xls

  string name=xls.Workbooks.Item(1).Name;              // читаем имя workbook'а, чтобы обращатья потом к нему по имени
  var wsh=xls.Workbooks.Item(name).Worksheets.Item(1); // создаем ссылку на на наш worksheet чтобы избежать впоследствии длинных записей

  Tabl = CreateObject("CurPrnTbl");
  int cnt=Tabl.Count_Rcr(); // полное число записей   

  //FillFld();

  //int nPor=0, NumStr=0, IndEnd=0;
  int nPor=0, IndEnd=0;
  int NumStr=0;


  for ( long rcr=0; IndEnd < 10; ++rcr)
  {
   // nPor   = atoi(Tabl.Text(fld[idxORD],rcr));  NumStr = nStart + nPor -1;

    NumStr = rcr + 15;

    char cellA[5];  sprintf(cellA,"A%d",NumStr);   // порядк № данного ТН
    char cellB[50]; sprintf(cellB,"B%d",NumStr);  
    char cellC[9];  sprintf(cellC,"C%d",NumStr);

    char cellD[7];  sprintf(cellD,"D%d",NumStr);
    char cellE[7];  sprintf(cellE,"E%d",NumStr);
    char cellF[7];  sprintf(cellF,"F%d",NumStr);
    char cellG[7];  sprintf(cellG,"G%d",NumStr);
    char cellH[7];  sprintf(cellH,"H%d",NumStr);
    char cellI[7];  sprintf(cellI,"I%d",NumStr);
    char cellJ[7];  sprintf(cellJ,"J%d",NumStr);
    char cellK[7];  sprintf(cellK,"K%d",NumStr);
    char cellL[7];  sprintf(cellL,"L%d",NumStr);
    char cellM[7];  sprintf(cellM,"M%d",NumStr);
    char cellN[7];  sprintf(cellN,"N%d",NumStr);   // 11_й день
    char cellO[7];  sprintf(cellO,"O%d",NumStr);   // 12_й день
    char cellP[7];  sprintf(cellP,"P%d",NumStr);   // 13_й день
    char cellQ[7];  sprintf(cellQ,"Q%d",NumStr);   // 14_й день
    char cellR[7];  sprintf(cellR,"R%d",NumStr);   // 15_й день

    char cellT[7];  sprintf(cellT,"T%d",NumStr);   // 16_й день
    char cellU[7];  sprintf(cellU,"U%d",NumStr);   // 17_й день
    char cellV[7];  sprintf(cellV,"V%d",NumStr);   // 18_й день
    char cellW[7];  sprintf(cellW,"W%d",NumStr);   // 19_й день
    char cellX[7];  sprintf(cellX,"X%d",NumStr);   // 20_й день
    char cellY[7];  sprintf(cellY,"Y%d",NumStr);   // 21_й день
    char cellZ[7];  sprintf(cellZ,"Z%d",NumStr);   // 22_й день
    char cellAA[7];  sprintf(cellAA,"AA%d",NumStr);   // 23_й день
    char cellAB[7];  sprintf(cellAB,"AB%d",NumStr);   // 24_й день
    char cellAC[7];  sprintf(cellAC,"AC%d",NumStr);   // 25_й день

    char cellAD[7];  sprintf(cellAD,"AD%d",NumStr);   // 26_й день
    char cellAE[7];  sprintf(cellAE,"AE%d",NumStr);   // 27_й день
    char cellAF[7];  sprintf(cellAF,"AF%d",NumStr);   // 28_й день

    char cellAG[7];  sprintf(cellAG,"AG%d",NumStr);   // 29_й день
    char cellAH[7];  sprintf(cellAH,"AH%d",NumStr);   // 30_й день
    char cellAI[7];  sprintf(cellAI,"AI%d",NumStr);   // 31_й день


    char cellAK[7];  sprintf(cellAK,"AK%d",NumStr);  // всего дней
    char cellAL[9];  sprintf(cellAL,"AL%d",NumStr);  // всего часов

    char cellAO[7];  sprintf(cellAO,"AO%d",NumStr);  // 25 вид НУ  (СвУр)
    char cellAP[7];  sprintf(cellAP,"AP%d",NumStr);  // 19 вид НУ  ()
    char cellAQ[7];  sprintf(cellAQ,"AQ%d",NumStr);  // 20 вид НУ  ()
    char cellAR[7];  sprintf(cellAR,"AR%d",NumStr);  // 22 вид НУ  ()
    char cellAS[7];  sprintf(cellAS,"AS%d",NumStr);  // 23 вид НУ  ()
    char cellAT[7];  sprintf(cellAT,"AT%d",NumStr);  // 30 вид НУ  ()


    string numer = xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellA)).Value;

    string fio =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellB)).Value);      
   
    int tn = atoi(xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellC)).Value);

    string d01 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellD)).Value);
    string d02 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellE)).Value);
    string d03 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellF)).Value);
    string d04 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellG)).Value);
    string d05 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellH)).Value);
    string d06 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellI)).Value);
    string d07 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellJ)).Value);
    string d08 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellK)).Value);
    string d09 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellL)).Value);
    string d10 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellM)).Value);

    string d11 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellN)).Value);
    string d12 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellO)).Value);
    string d13 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellP)).Value);
    string d14 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellQ)).Value);
    string d15 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellR)).Value);
    string d16 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellT)).Value);
    string d17 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellU)).Value);
    string d18 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellV)).Value);
    string d19 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellW)).Value);
    string d20 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellX)).Value);

    string d21 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellY)).Value);
    string d22 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellZ)).Value);
    string d23 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellAA)).Value);
    string d24 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellAB)).Value);
    string d25 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellAC)).Value);
    string d26 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellAD)).Value);
    string d27 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellAE)).Value);
    string d28 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellAF)).Value);
    string d29 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellAG)).Value);
    string d30 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellAH)).Value);

    string d31 =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellAI)).Value);


    string rd = xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellAK)).Value;
    string rh = xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellAL)).Value;

    string sv, sv01;
    sv   = xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellAO)).Value;
   // if(IndEnd == 0) sv   = xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellAO)).Value;
   // if(IndEnd == 1) sv01 = xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellAO)).Value;

    string rv19 = xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellAP)).Value;
    string rv20 = xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellAQ)).Value;
    string rv22 = xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellAR)).Value;
    string rv23 = xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellAS)).Value;
    string rv30 = xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellAT)).Value;


    if(atoi(numer) != 0) IndEnd = 0;
    else  IndEnd++;

   if(tn)    // т.е. записываем в таблицу если заполнено поле с ТН
    {
     CTabl.Add_Rcr(rcr,1);        

     if(atoi(numer) != 0) CTabl.STextS("NN",rcr,static_cast_to_string(numer));

     if(strlen(fio) != 4) CTabl.STextS("FIO",rcr,static_cast_to_string(fio));
     if(tn != 0) CTabl.STextS("C_FIO",rcr,static_cast_to_string(tn));

     CTabl.STextS("NewLS",rcr,static_cast_to_string(IndEnd));           //(NumStr));
     CTabl.STextS("FCpodr",rcr,static_cast_to_string(NumStr));

     if(strlen(d01) != 4) CTabl.STextS("Pole_D",rcr,static_cast_to_string(d01));
     if(strlen(d02) != 4) CTabl.STextS("Pole_E",rcr,static_cast_to_string(d02));
     if(strlen(d03) != 4) CTabl.STextS("Pole_F",rcr,static_cast_to_string(d03));
     if(strlen(d04) != 4) CTabl.STextS("Pole_G",rcr,static_cast_to_string(d04));
     if(strlen(d05) != 4) CTabl.STextS("Pole_H",rcr,static_cast_to_string(d05));
     if(strlen(d06) != 4) CTabl.STextS("Pole_I",rcr,static_cast_to_string(d06));
     if(strlen(d07) != 4) CTabl.STextS("Pole_J",rcr,static_cast_to_string(d07));
     if(strlen(d08) != 4) CTabl.STextS("Pole_K",rcr,static_cast_to_string(d08));
     if(strlen(d09) != 4) CTabl.STextS("Pole_L",rcr,static_cast_to_string(d09));
     if(strlen(d10) != 4) CTabl.STextS("Pole_M",rcr,static_cast_to_string(d10));
     if(strlen(d11) != 4) CTabl.STextS("Pole_N",rcr,static_cast_to_string(d11));
     if(strlen(d12) != 4) CTabl.STextS("Pole_O",rcr,static_cast_to_string(d12));
     if(strlen(d13) != 4) CTabl.STextS("Pole_P",rcr,static_cast_to_string(d13));
     if(strlen(d14) != 4) CTabl.STextS("Pole_Q",rcr,static_cast_to_string(d14));
     if(strlen(d15) != 4) CTabl.STextS("Pole_R",rcr,static_cast_to_string(d15));

     if(strlen(d16) != 4) CTabl.STextS("Pole_T",rcr,static_cast_to_string(d16));
     if(strlen(d17) != 4) CTabl.STextS("Pole_U",rcr,static_cast_to_string(d17));
     if(strlen(d18) != 4) CTabl.STextS("Pole_V",rcr,static_cast_to_string(d18));
     if(strlen(d19) != 4) CTabl.STextS("Pole_W",rcr,static_cast_to_string(d19));
     if(strlen(d20) != 4) CTabl.STextS("Pole_X",rcr,static_cast_to_string(d20));
     if(strlen(d21) != 4) CTabl.STextS("Pole_Y",rcr,static_cast_to_string(d21));
     if(strlen(d22) != 4) CTabl.STextS("Pole_Z",rcr,static_cast_to_string(d22));
     if(strlen(d23) != 4) CTabl.STextS("Pole_AA",rcr,static_cast_to_string(d23));
     if(strlen(d24) != 4) CTabl.STextS("Pole_AB",rcr,static_cast_to_string(d24));
     if(strlen(d25) != 4) CTabl.STextS("Pole_AC",rcr,static_cast_to_string(d25));

     if(strlen(d26) != 4) CTabl.STextS("Pole_AD",rcr,static_cast_to_string(d26));
     if(strlen(d27) != 4) CTabl.STextS("Pole_AE",rcr,static_cast_to_string(d27));
     if(strlen(d28) != 4) CTabl.STextS("Pole_AF",rcr,static_cast_to_string(d28));
     if(strlen(d29) != 4) CTabl.STextS("Pole_AG",rcr,static_cast_to_string(d29));
     if(strlen(d30) != 4) CTabl.STextS("Pole_AH",rcr,static_cast_to_string(d30));
     if(strlen(d31) != 4) CTabl.STextS("Pole_AI",rcr,static_cast_to_string(d31));


     CTabl.STextS("RabD",rcr,static_cast_to_string(rd));
     CTabl.STextS("RabH",rcr,static_cast_to_string(rh));

     CTabl.STextS("SvUr",rcr,static_cast_to_string(sv));
    // CTabl.STextS("SvUr01",rcr,static_cast_to_string(sv01));

     CTabl.STextS("RV_19",rcr,static_cast_to_string(rv19));
     CTabl.STextS("RV_20",rcr,static_cast_to_string(rv20));
     CTabl.STextS("RV_22",rcr,static_cast_to_string(rv22));
     CTabl.STextS("RV_23",rcr,static_cast_to_string(rv23));
     CTabl.STextS("RV_30",rcr,static_cast_to_string(rv30));


     CTabl.Rewrite();

    }

  }


}











Ansi( Str )
// функция перекодирует значение Str в windows-кодировку и возвращает перекодированное значение
// Str - строка, которую нужно перекодировать
{
   string Ans=Str;
   OemToChar(Str,Ans);
   return Ans;
}


Vdos(Str)
{
   string Ans=Str;
   CharToOem(Str,Ans);
   return Ans;
}
