// модуль предназначен для приема информации из Excel  с листа №_1      
// и разноски номеров карт в ЛС                                    на основе sta_701
//вызов:  "Ф-ция для приема из файла"_:  user\novik_read,ReadExl,0

string cel[43];
//char str_01[99], str_02[99], str_03[99];
//char str_11[99], str_12[99];

//  ПРИМЕР использов. cel[xx] 
// bb1++;     sprintf(Title01,"%s",static_cast_to_string(cel[bb1]));
// sprintf(nnn,"%s%s",Title01,static_cast_to_string(bb5));
// if(bb2 != 0)  tWriteStringToCell(nnn,OemToAnsi(bb2));

int idxF  =0,  // 
    idxI  =1,  // 
    idxO  =2,  // 
    idxNN =3,  // 
    idxNNN =4,  // 

    CntIdx =5;

int fld[CntIdx];

int len=256;
char str[len];


var CTabl   = CreateObject("CurPrnTbl");


ReadExl( AdrCTabl,       // адрес передаваемой таблицы
         AdrCListTabl,   // адрес списка таблиц
         RcrInList       // номер записи в списке таблиц
       )
{
  CTabl.Initial(AdrCTabl);    // текущая таблица
  CTabl.Clear();              // очистка таблицы

  var xls=CreateObject("Excel.Application");  // создаем объект Excel.Application, т.е. запускаем Excel, если он установлен конечно

  char Dir[len];                              // строка для текущей директории
  GetCurrentDirectory(len,Dir);               // получаем текущую директорию (это корень каталога ZPL из которого запустили АМБу)

  string nm="novik.xls";              //string nm="novik_1.xls";
  var WorkDir ="C:\\1111\\";   //var WorkDir ="C:\\NovikomBank\\";
  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 чтобы избежать впоследствии длинных записей

  FillFld();

  int nStart = 4;                     // № первой строки в Excel
  int nPor=0, NumStr=0, IndEnd=0;

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

    char cellA[35], cellB[35], cellC[35], cellD[30];
//    sprintf(cellA,"A%d",NumStr);
//    sprintf(cellB,"B%d",NumStr);
//    sprintf(cellC,"C%d",NumStr);
//    sprintf(cellD,"D%d",NumStr);
    sprintf(cellA,"D%d",NumStr);
    sprintf(cellB,"E%d",NumStr);
    sprintf(cellC,"F%d",NumStr);
    sprintf(cellD,"C%d",NumStr);

    string f =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellA)).Value);      
    string i =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellB)).Value);      
    string o =Vdos( xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellC)).Value);      
    string nn = xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellD)).Value;      
    var nnn = xls.Workbooks.Item(1).Worksheets.Item(1).Range(static_cast_to_string(cellD)).Value;      

    CTabl.Add_Rcr(rcr,1);        
    CTabl.SText(fld[idxF],rcr,static_cast_to_string(f)); 
    CTabl.SText(fld[idxI],rcr,static_cast_to_string(i)); 
    CTabl.SText(fld[idxO],rcr,static_cast_to_string(o)); 
    CTabl.SText(fld[idxNN],rcr,static_cast_to_string(nnn)); 
    CTabl.SText(fld[idxNNN],rcr,static_cast_to_string(nnn)); 
    CTabl.Rewrite();

    IndEnd++;
    if( atoi(nn) <  1)  IndEnd = 9999;
  }
}


FillFld()  {
  // находим поля в таблице и определяем их номера
  fld[idxF]   = CTabl.Find_Name_Fld("FCf");
  fld[idxI]   = CTabl.Find_Name_Fld("FCi");
  fld[idxO]   = CTabl.Find_Name_Fld("FCo");
  fld[idxNN]  = CTabl.Find_Name_Fld("FCBankCard");
  fld[idxNNN]  = CTabl.Find_Name_Fld("FCnkb_card");
}


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

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