Работа с таблицами в MultiCAD.NET. Часть 3. Внешние файлы таблиц и обмен данными с Microsoft Excel



    В предыдущих статьях о таблицах в 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. Конечно же, это далеко не все возможности, которые предоставляет табличный функционал, тем более, что в настоящее время работы по его расширению и улучшению продолжаются.

    Если те или иные аспекты работы с таблицами остались недостаточно подробно освещенными, пишите комментарии, предлагайте темы для будущих статей.

    Обсуждение статьи доступно также и на нашем форуме: forum.nanocad.ru/index.php?showtopic=6512.

    Перевод статьи на английский: Tables in MultiCAD.NET. Part 3: Saving and loading table from an external file
    Нанософт 65,06
    Компания
    Поделиться публикацией
    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое