![]() |
![]() |
tpz.ru | карта сайта | english | ||
Воронеж +7(4732)3-55-555 +7(4732)53-18-31 |
||||
| продукты | решения | загрузка | поддержка | команда | ||||

Заполнение таблицыСценарий работы примера заключается в считывании данных из текстового файла, заполнение ими шаблона таблицы. Файл с даннымиФайл с данными представляет собой текстовый файл, в котором поля разделены символом TAB.
Графический документГрафический документ TOPAZ Graphics подготовлен следующим образом:
Кроме того, объект таблица содержит информацию (задается пользователем) о местоположении в файловой системе текстового файла с данными. Для этого используется свойство объекта Parameters. В пользовательском интерфейсе редактора доступ к нему можно получить на закладке Данные диалога параметров объекта:
СкриптПриводимый ниже скрипт выполняет следующие действия:
Результат работы скрипта:
'Получение указателя на объект Таблица
set tpzLayer = Document.Layers.Find("Слой", tgsFindName)(0)
set TypeTable = tpzLayer.DrawOrder.Find("Итоговая Таблица", tgsFindName)(0)
set ObjTable = TypeTable.Objects.Find("Товары", tgsFindName)(0)
'открытие текстового файла
FilePath = ObjTable.Parameters("FilePath") 'получение пути к файлу
set fso = CreateObject("Scripting.FileSystemObject")
set txtStreamIn = fso.OpenTextFile(FilePath, 1)
'чтение данных из текстового файла
idx = 0
HC = ObjTable.RowHeight(0) 'Высота заголовка таблицы
Do While Not (txtStreamIn.atEndOfStream)
txtLine = Trim(txtStreamIn.ReadLine)
if (txtLine <> "") Then
idx = idx + 1
'добавляем строку в таблицу
ObjTable.InsertRow idx, HC
FillRow idx, txtLine
end if
Loop
set txtStreamIn = Nothing 'закрываем файл
'Суммирование ячеек (заполнение столбца "Сумма")
const idxQuantity = 2 'индекс колонки "Кол-во"
const idxPrice = 3 'индекс колонки "Цена"
const idxResult = 4 'индекс колонки "Сумма"
for i = 1 to idx
summ = CLng(ObjTable.CellText(i, idxQuantity)) * _
CDbl(ObjTable.CellText(i, idxPrice))
ObjTable.CellText(i, idxResult) = CStr(summ)
next
'Установка стилей ячеек внутренней области таблицы
const BorderStyle = 0 'индекс стиля границы
const TextStyle = 0 'индекс стиля ячейки
for i = 1 to (ObjTable.RowCount - 1)
for j = 0 to (ObjTable.ColCount - 1)
if (i > 1) Then ObjTable.AssignCellBorderStyle i, j, csTop, BorderStyle
ObjTable.CellStyle (i, j) = TextStyle
next
next
'функция разбора строки по символам TAB и заполнения ячеек в таблице
sub FillRow (idx, txt)
for i = 0 to (ObjTable.ColCount - 2)
pos = InStr(1, txt, chr(9), 1) 'поиск позиции TAB
if pos = 0 Then
txtCell = txt
else
txtCell = mid(txt, 1, (pos - 1)) 'выделение строки до TAB
end if
ObjTable.CellText(idx, i) = Trim(txtCell) 'запись в ячейку
'урезание исходной строки от начала до TAB
txt = mid (txt, (pos + 1), (len(txt) - pos))
next
end sub
|
|