Логотип Программные решения на основе технологической графики tpz.ru | карта сайта | english
Воронеж +7(4732)3-55-555
+7(4732)53-18-31
Главная / Поддержка / Разработчикам / TOPAZ Graphics примеры кода / Заполнение таблица

Заполнение таблицы

Сценарий работы примера заключается в считывании данных из текстового файла, заполнение ими шаблона таблицы.

Файл с данными

Файл с данными представляет собой текстовый файл, в котором поля разделены символом 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

Locations of visitors to this page