// Пример 2. Печать в Excel списка ЛС.

Primer02()
{
  var CFile=CreateObject("CurPrnFile"); // объект класса для работы с текущим файлом печати
  CFile.SetFlagBrowse(0);               // запрещаем просмотр

  var CTabl=CreateObject("CurPrnTbl");  // объект класса для работы с текущей таблицей
  int cr=CTabl.Count_Rcr();             // число рабочих записей в таблице   

  string tn;     // табельный номер
  char fio[250]; // фамилия, имя, отчество

  var xls=CreateObject("Excel.Application");  // создаем объект Excel.Application, т.е. запускаем Excel, если он установлен конечно
  char Dir[128];                              // строка для текущей директории
  GetCurrentDirectory(128,Dir);               // получаем текущую директорию (это корень каталога ZPL из которого запустили АМБу)
  string nm="ls.xls";                         // имя Excel'евского файла, он должен находиться в каталоге USER
  var WorkDir = Dir + "\\..\\script\\user\\"; // получаем рабочий каталог, т.е. из ZPL переходим в USER
  xls.Caption="╤яшёюъ ышЎхт√ї ёўхЄют";        // заголовок (в windows кодировке)
  xls.Workbooks.Add(WorkDir+nm);              // открываем в Excel'е наш файл ls.xls

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

  string cell; // в эту строку будем записывать имена ячеек worksheet'а

  // цикл по записям таблицы
  for (int zap=0; zap<cr; zap++)
  {
    tn=CTabl.TextS("C_FIO",zap);              // читаем из таблицы значение поля C_FIO для записи zap
    sprintf(fio,"%s",CTabl.TextS("FIO",zap)); // читаем из таблицы значение поля FIO для записи zap
    FreeSpaceString(fio,3,"");                // удаляем из fio начальные и концевые пробелы
    OemToChar(fio,fio);                       // переводим fio в windows кодировку

    int n=zap+3; // номер строки в worksheet'е

    cell="A" + static_cast_to_string(n); // записываем в cell имя ячейки
    WriteToCell(WSheet1, cell, tn);      // пишем в ячейку worksheet'а значение tn

    cell="B" + static_cast_to_string(n); // записываем в cell имя ячейки          
    WriteToCell(WSheet1, cell, fio);     // пишем в ячейку worksheet'а значение fio
  }

  WSheet1.Name="ёяшёюъ ╦╤"; // имя worksheet'а (в windows кодировке)
  xls.Visible=true;         // делаем Excel видимым

  return 0;
}

WriteToCell(WSheet,Cell,str)
// WSheet - ссылка на worksheet
// Cell - имя ячейки
// str - значение, которое требуется записать в ячейку Cell рабочего листа WSheet
{
  WSheet.Range(Cell).Value=static_cast_to_string(str);
  return 0;
}
