Экспорт/Импорт для Excel, Экспорт в iCal

Библиотека dhtmlxGantt позволяет экспортировать данные из диаграммы Ганта в форматы Excel и iCal. Вы также можете импортировать данные в Gantt из файла Excel.

Сервис экспорта бесплатный, но итоговый файл Excel или iCal будет содержать водяной знак библиотеки по лицензии GPL. Если вы приобретете лицензию, экспортированные файлы будут без водяного знака в течение действующего периода поддержки (12 месяцев для всех PRO лицензий).

Существует несколько сервисов экспорта, которые вы можете настроить на своем локальном компьютере для экспорта диаграмм Ганта в Excel или iCal. Помните, что эти сервисы экспорта не являются частью пакета Gantt. Ознакомьтесь с соответствующей статьей для получения подробной информации об условиях использования.

Ограничения онлайн-сервиса экспорта

Сервис экспорта имеет ограничения по времени и размеру запроса.

Ограничения по времени

Если процесс экспорта занимает более 20 секунд, он будет остановлен, и вы увидите следующую ошибку:

Error: Timeout trigger 20 seconds

Когда несколько пользователей экспортируют диаграммы Ганта одновременно, процесс может занять больше времени. Однако время, затраченное на запрос каждого пользователя, рассчитывается индивидуально.

Ограничения на размер запроса

Общий API-эндпоинт https://export.dhtmlx.com/gantt используется для всех методов экспорта (exportToPDF, exportToPNG, exportToMSProject и т.д.). Максимальный размер запроса составляет 10 МБ.

Для сервисов, таких как MSProject и Primavera P6 экспорт/импорт (exportToMSProject / importFromMSProject / exportToPrimaveraP6 / importFromPrimaveraP6), доступен отдельный API-эндпоинт https://export.dhtmlx.com/gantt/project, с более высоким лимитом размера запроса в 40 МБ.

Использование модулей экспорта

Если вы работаете с большими диаграммами, рассмотрите возможность использования автономного модуля экспорта. Этот модуль бесплатен, если у вас есть Commercial, Enterprise или Ultimate лицензия. В качестве альтернативы, вы можете приобрести модуль отдельно.

Более подробную информацию о использовании модуля экспорта в PDF можно найти здесь. Этот модуль поддерживает экспорт данных в форматы PDF, PNG, Excel и iCal.

Экспорт в Excel

Чтобы экспортировать данные диаграммы Ганта в файл Excel, выполните следующие шаги:

  • Включите плагин export_api, используя метод плагины, если вы используете онлайн-сервис экспорта:
gantt.plugins({
    export_api: true
});

Для версий Gantt старше 8.0 включите https://export.dhtmlx.com/gantt/api.js на своей странице, чтобы активировать онлайн-сервис экспорта, как показано ниже:

<script src="codebase/dhtmlxgantt.js"></script>
<script src="https://export.dhtmlx.com/gantt/api.js"></script>

  • Используйте метод exportToExcel для экспорта данных:
<input value="Export to Excel" type="button" onclick='gantt.exportToExcel()'> 
<script>
    gantt.init("gantt_here");
    gantt.parse(demo_tasks);
</script>

Related sample:  Export data : MS Project, PrimaveraP6, Excel & iCal

Related sample:  Export data: store online

Параметры метода экспорта

Метод exportToExcel() принимает объект с несколькими необязательными свойствами:

  • name - (string) задает имя выходного файла с расширением '.xlsx'.
  • columns - (array) позволяет настроить колонки в листе Excel. Каждый объект колонки включает:
    • 'id' - (string,number) сопоставляется со свойством события.
    • 'header' - (string) задает заголовок колонки.
    • 'width' - (number) определяет ширину колонки в пикселях.
    • 'type' - (string) указывает тип колонки.
  • server - (string) устанавливает API-эндпоинт для запроса, полезно для локальных установок сервиса экспорта. По умолчанию: https://export.dhtmlx.com/gantt.
  • callback - (function) позволяет получить URL для загрузки сгенерированного XLSX файла. Принимает JSON-объект с свойством URL.
  • visual - (boolean) включает временную шкалу в файл Excel. По умолчанию: false.
  • cellColors - (boolean) применяет цвета к ячейкам на основе шаблона timeline_cell_class. Экспортируются как свойства color, так и background-color.
  • data - (object) указывает пользовательский источник данных для экспортируемой диаграммы Ганта.
  • date_format - (string) задает формат даты в файле Excel. Полный список кодов форматов доступен здесь.

Пример: Вызов метода экспорта с необязательными свойствами

gantt.exportToExcel({
    name:"document.xlsx", 
    columns:[
        { id:"text",  header:"Title", width:150 },
        { id:"start_date",  header:"Start date", width:250, type:"date" }
    ],
    server:"https://myapp.com/myexport/gantt",
    callback: function(res){
        alert(res.url);
    },
    visual:true,
    cellColors:true,
    data:{},
    date_format: "dddd d, mmmm yyyy"
});

Параметры даты по умолчанию

Модуль экспорта ожидает, что колонки start_date и end_date будут иметь тип Date, а колонка duration - тип number.

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

gantt.config.columns = [
    ...
    {name: "start_date", align: "center", width: 100, resize: true, 
        editor: start_dateEditor},
    {name: "end_date", align: "center", width: 100, resize: true, 
        editor: end_dateEditor},
    {name: "duration_formatted",         align: "center", width: 40, resize: true, 
        editor: durationEditor, 
        template: function(task){             return formatter.format(task.duration_formatted);         }
    },
    ...
];

Если нет, данные Gantt не будут экспортированы. См. связанный пример.

Пользовательский источник данных для экспорта

Чтобы экспортировать диаграмму Ганта с пользовательским набором данных (вместо текущих данных Gantt), используйте свойство data в методе exportToExcel:

gantt.exportToExcel({   
    name:"document.xlsx", 
    data:[
        {id:1, text:"Project #1", start_date:"01-04-2020", duration:18},
        {id:2, text:"Task #1", start_date:"02-04-2020",duration:8, parent:1},
        {id:3, text:"Task #2", start_date:"11-04-2020",duration:8, parent:1}
    ]      
});

Параметр data принимает только объект данных, а не URL.

Добавление цветов задач в экспорт

Чтобы включить цвета задач в экспортируемый файл Excel, установите свойство visual в значение "base-colors":

gantt.exportToExcel({
    visual: "base-colors",     cellColors: true
})

Related sample:  Экспорт цветов задач

Импорт из Excel

Поскольку сервис экспорта не сопоставляет произвольные колонки Excel с моделью данных Gantt автоматически, он преобразует документ в массив строк в формате JSON. Разработчики несут ответственность за преобразование этих данных в формат Gantt.

Чтобы преобразовать файл Excel, отправьте запрос на сервис экспорта:

  • URL запроса: https://export.dhtmlx.com/gantt
  • Метод запроса: POST
  • Content-Type: multipart/form-data

Параметры:

  • file - файл Excel.
  • type - "excel-parse".
  • data - (необязательно) строка JSON с настройками.

Пример:

<form action="https://export.dhtmlx.com/gantt" method="POST" 
    enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="hidden" name="type" value="excel-parse">
    <button type="submit">Get</button>
</form>

В качестве альтернативы, вы можете использовать клиентский API:

gantt.importFromExcel({
    server:"https://export.dhtmlx.com/gantt",
    data: file,
    callback: function(project){
        console.log(project)
    }
});

Related sample:  Import Excel file

Здесь file - объект File, содержащий файл Excel (xlsx).

gantt.importFromExcel опирается на поддержку HTML5 File API.

Ответ

Ответ будет в формате JSON массива объектов:

[
   { "Name": "Task Name", "Start": "2018-08-11 10:00", "Duration": 8 },
   ...
]
  • Значения первой строки используются как имена свойств для объектов.
  • Каждая строка становится отдельным объектом.
  • Даты имеют формат "%Y-%m-%d %H:%i".

Настройки импорта

  • Первая строка в листе Excel должна быть строкой заголовков с именами колонок.
  • По умолчанию возвращается первый лист. Чтобы указать другой лист, используйте параметр sheet (индекс, начиная с нуля).
gantt.importFromExcel({
    server:"https://export.dhtmlx.com/gantt",
    data: file,
    sheet:2, // выбирает третий лист
    callback: function (rows) {}
});

Экспорт в iCal

Чтобы экспортировать данные диаграммы Ганта в строку iCal, выполните следующие шаги:

  • Включите плагин export_api, используя метод плагины:
gantt.plugins({
    export_api: true
});
  • Используйте метод exportToICal для экспорта данных:
<input value="Export to iCal" type="button" onclick='gantt.exportToICal()'> 
<script>
    gantt.init("gantt_here");
    gantt.parse(demo_tasks);
</script>

Related sample:  Export data : MS Project, PrimaveraP6, Excel & iCal

Related sample:  Export data: store online

Параметры метода экспорта

Метод exportToICal() принимает объект с этими необязательными свойствами:

  • server - (string) устанавливает API-эндпоинт для запроса, полезно для локальных установок сервиса экспорта. По умолчанию: https://export.dhtmlx.com/gantt.
  • name - (string) позволяет указать пользовательское имя файла и расширение, но файл всегда будет в формате iCal.

Пример: Вызов метода экспорта с необязательными свойствами

gantt.exportToICal({
    server:"https://myapp.com/myexport/gantt"
});
К началу