Table.Save

From SunFlurry wiki
Jump to: navigation, search
  Save (Сохранение таблицы)
Объект:Электронная таблица
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Невозможно превратить в строку, число, невозможно сохранить файл
Визуальность:Нет

Функция производит сохранение текущей таблицы в файл в указанном формате. Внутренний SFT формат все данные хранит в виде строк, поэтому при сохранении в формат, хранящий числа не в текстовом формате (к примеру, в xls), система превращает текст ячейки в число автоматически при отсутствии в строке неверных знаков. Разрешены только знаки -,0..9, . и E, разделителем целой и дробной частей числа всегда принимается точка. Знаки `, пробел и ' также могут принадлежать числам, как разделители разрядов. Если число содержит неверные знаки, оно будет экспортировано как строка, без каких либо изменений. Также если число содержит ведущие нули (к примеру, 000000123456), оно будет экспортировано как строка. Программа экспорта не пытается определять даты и время, даты всегда будут экспортированы как строки.

Синтаксис

Table.Save(<Наименование файла (STRING)>,<Формат (INT,STRING)>,<Список таблиц для сохранения в листы книги (LIST)>)

Аргументы

  • <Наименование файла (STRING)> - Аргумент задает наименование файла с путем и расширением. Путь может быть как серверным и так и локальным (Имена файлов). Если второй аргумент отсутствует, формат файла будет определен из расширения файла загрузки.
  • <Формат (INT,STRING)> - (необязательный аргумент) Аргумент задает формат сохраняемого файла в строковом или числовом виде. Доступны следующие значения:
    • 0 или SFT -- файл во внутреннем формате системы (sft)
    • 1 или XLS -- файл в формате Excel (xls). При экспорте в формат xls имеются следующие ограничения:
      • Не экспортируются картинки, внедренные на лист в виде объектов
      • Не экспортируются текст и прямоугольники, внедренные на лист в виде объектов
      • Не экспортируются горизонтальные или вертикальные уровни группировки
      • Не экспортируются OLE-обьекты, внедренные на лист
      • Количество экспортируемых столбцов не будет превышать 256, количество экспортируемых строк -- 65530, если в таблице есть данные вне этого ограничения, они будут игнорированы при экспорте.
    • 2 или XLSX -- файл в формате Excel (xlsx). При экспорте в формат xlsx имеются следующие ограничения:
      • OLE-обьекты, внедренные на лист, будут открываться только в Microsoft Excel начиная с версии 14 (Office 2010).
      • Количество экспортируемых столбцов и количество экспортируемых строк не ограничено, однако Microsoft Excel разных версий обладает встроенным ограничением на количество строк и столбцов, при экспорте очень больших таблиц часть данных может быть не видна. Сама система не может создавать таблицы с количеством столбцов более 2147483647.
  • <Список таблиц для сохранения в листы книги (LIST)> - (необязательный аргумент) Аргумент может содержать список объектов типа таблица SFT для помещения в виде листов в одну книгу. Если аргумент задан, вызов метода можно произвести непосредственно из интерфейса Table, а не из объекта. Если вызов производится из объекта, этот объект будет использован, как первая страница книги. Наименования списка будут задавать наименования листов. Первый из элементов, имеющих значение галочки (Check), не равным нулю, будет фигурировать, как активная страница. Если все галочки равны нулю, активной будет первая страница. Данный режим сохранения на данный момент поддерживается только ля формата XLSX.

Примеры

Т:=Table.Create();
Т.SetSourceName("Продажи");
Т.CopyByX("v1",1);
  
Строк:=0;
While З.Next(1) Do
  зДок:=З.Документ;
  If (зДок.DBName()<>"Реализация")And(зДок.DBName()<>"ВозвратОтПокупателя") Then
    Continue;
  EndIf;

  ...
    
  Т.CopyByX("v2",1);
EndDo;
 
Т.Save(Путь+"Продажи.xls","XLS");


//Сохранение книги с несколькими листами
aList:=List.Create();
T:=Table.Create();
T.Load("c:\Листы\100.sft");
aList.Add(T,"Лист 100");
T:=Table.Create();
T.Load("c:\Листы\101.sft");
aList.Add(T,"Лист 101");
T:=Table.Create();
T.Load("c:\Листы\102.sft");
aList.Add(T,"Лист 102");
//Активным будет третий лист
aList.Check(3,1);

Table.Save("c:\Книги\Книга 100,101,202.xlsx","XLSX",aList);