В предыдущих статьях о таблицах в MultiCAD.NET речь шла о программном создании и форматировании таблиц в чертеже, использовании различных типов данных в качестве содержимого, а также о применении шаблонов таблиц. В этой статье мы продолжим рассказ об использовании шаблонов и более подробно рассмотрим API, позволяющий сохранить таблицу во внешний файл в качестве шаблона и загрузить его в чертеж для формирования типовых таблиц. Во второй половине статьи будет рассмотрен процесс обмена данными с Microsoft Excel.
Исходная таблица
Пусть исходная таблица содержит характеристики металлического профиля — наименование, марка, толщина стали, назначение — структура которой может быть использована для описания различных типов профиля: направляющего, стоечного и пр.:
Мы не будем останавливаться на процедуре создания такой таблицы: о том, как создавать и редактировать таблицы мы писали ранее, в предыдущей статье.
Сохранение таблицы как шаблон
Для сохранения таблицы в отдельный файл используется метод McTable.SaveToFile()
. Метод позволяет записывать таблицу в файлы следующих форматов:
- файлы таблиц (.dat),
- текст, разделенный табуляцией (.txt),
- текст, разделенный точкой с запятой (.csv),
- XML,
- книга Microsoft Excel (.xls),
- таблицы OpenOffice.org (.ods).
Таблицу, которую нужно сохранить в качестве шаблона, можно выбрать на чертеже. Следующая команда сохраняет выбранную таблицу в один из доступных форматов:
[CommandMethod("smpl_SaveTable", CommandFlags.NoCheck | CommandFlags.NoPrefix)] public void smpl_SaveTable() { McObjectId idSelected = McObjectManager.SelectObject("Укажите таблицу для записи:"); if (idSelected.IsNull) { return; } McTable outObj = McObjectManager.GetObject(idSelected); if (outObj == null) { return; } // Без указания параметров метод SaveToFile() вызовет диалог, // в котором пользователю будет предложено выбрать имя и формат файла. outObj.SaveToFile(); }
Загрузка таблицы из файла
Загрузка таблицы из внешнего файла производится с помощью метода McTable.LoadFromFile()
. Как и для SaveToFile()
, имя файла может быть указано явно или выбрано из диалога. Поддерживаются следующие форматы загружаемых файлов:
- Файлы таблиц (.tbl, .dat),
- текстовые форматы (.txt, .csv, .xml),
- файлы Microsoft Access(.mdb, .accdb),
- книга Microsoft Excel (.xls, .xlsx),
- таблицы OpenOffice.org (.ods),
- таблицы StarOffice (.sxc).
Следующая команда добавляет в чертеж таблицу из файла, выбранного пользователем:
[CommandMethod("smpl_LoadTable", CommandFlags.NoCheck | CommandFlags.NoPrefix)] public void smpl_LoadTable() { McTable Table2 = new McTable(); // Без указания параметров метод LoadFromFile() вызовет диалог, // в котором пользователю будет предложено выбрать имя и формат файла. if (Table2.LoadFromFile()) { Table2.PlaceObject(McEntity.PlaceFlags.Silent); } }
Теперь мы можем использовать сохраненную таблицу в качестве шаблона для добавления в чертеж типовых таблиц:
Обмен данными с Microsoft Excel
Кроме сохранения таблиц в файлы различного формата, MultiCAD.NET содержит возможность быстрого переноса табличных данных в лист Microsoft Excel и обратно.
При вызове метода ExportToExcel()
открывается новая книга Excel и в неё переносятся все табличные данные с сохранением форматирования ячеек, установленного в таблице.
Добавим команду, которая позволит выбрать на чертеже таблицу, и экспортировать ее в лист Excel:
[CommandMethod("smpl_ExportTableToExcel", CommandFlags.NoCheck | CommandFlags.NoPrefix)] public void smpl_ExportTableToExcel() { McObjectId idSelected = McObjectManager.SelectObject("Укажите таблицу для экспорта:"); if (idSelected.IsNull) { return; } McTable outObj = McObjectManager.GetObject(idSelected); if (outObj == null) { return; } outObj.ExportToExcel(); }
MultiCAD.NET также поддерживает импорт выделенного диапазона ячеек таблицы из открытого листа Excel, для чего нужно вызвать функцию ImportFromExcel()
.
Следующая команда вставляет выделенный диапазон ячеек из листа Excel в чертеж:
[CommandMethod("smpl_ImportTableFromExcel", CommandFlags.NoCheck | CommandFlags.NoPrefix)] public void smpl_ImportTableFromExcel() { McTable Table2 = new McTable(); if (Table2.ImportFromExcel()) { Table2.PlaceObject(McEntity.PlaceFlags.Silent); } }
Этой публикацией мы завершаем обзор основных средств для работы с таблицами в MultiCAD.NET API. Конечно же, это далеко не все возможности, которые предоставляет табличный функционал, тем более, что в настоящее время работы по его расширению и улучшению продолжаются.
Если те или иные аспекты работы с таблицами остались недостаточно подробно освещенными, пишите комментарии, предлагайте темы для будущих статей.
ссылка на оригинал статьи http://habrahabr.ru/company/nanosoft/blog/198788/
Добавить комментарий