Формат RGF

Файл формата RGF содержит данные листа ReoGrid, описание стилейграниц, формул и другой информации. RGF может быть сохранён при помощи ReoGrid или ReoGridEditor.

Формат RGF основывается на XML. Для сохранения электронной таблицы в файле формата RGF нужно использовать метод экземпляра листа SaveRGF:

worksheet.SaveRGF(путь или поток);

Для загрузки электронной таблицы из файла RGF используется метод экземпляра листа LoadRGF:

worksheet.LoadRGF(путь или поток);

Пример содержимого файла формата RGF

Ниже приведено содержимое файла формата RGF:

<?xml version="1.0"?>
<grid xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <head>
    <meta>
      <culture>en-US</culture>
      <editor>ReoGrid Core </editor>
      <core-ver>0.8.9.2</core-ver>
    </meta>
    <print-settings>
      <paper-size>A4</paper-size>
      ...
    </print-settings>
  </head>
  <style color="#000000" font="Arial" font-size="9.75" bold="true" align="left" valign="middle" />
  <rows>
    <row row="0" height="11" auto-height="false" />
    ...
  </rows>
  <cols>
    <col col="0" width="10" auto-width="false" />
    ...
  </cols>
  <v-borders>
    <v-border row="23" col="3" color="#000000" style="Solid" pos="left" rows="8" />
    ...
  </v-borders>
  <h-borders>
    <h-border row="3" col="1" color="#000000" style="BoldSolid" pos="top" cols="14" />
    ...
  </h-borders>
  <cells>
    <cell row="1" col="1" colspan="14" format="text">Project Cost Summary
      <style bgcolor="#00007d" color="#ffffff" font-size="20.25" align="center" />
    </cell>
    ...
  </cells>
</grid>

Структура файла RGF

Корневой элемент

<grid>
  ...
</grid>

Элемент head

В элементе head хранится основная информация: количество ячеек, настройки отображения, настройки печати и другое.

Элемент meta

Элемент meta хранит мета-информацию о листе: о культуре и версиях ReoGrid. Пример:

<meta>
  <culture>en-US</culture>
  <editor>ReoGrid Core</editor>
  <core-ver>0.8.9.2</core-ver>
</meta>

Элементы rows и cols

Элементы rows и cols хранят максимальные номера строк и столбцов листа в этом RGF-файле. Пример:

<rows>100</rows>
<cols>50</cols>

Элемент print-settings

Элемент print-settings хранит настройки печати и принтера для текущего листа. Пример:

<print-settings>
  <page-break-rows>0,42</page-break-rows>
  <page-break-cols>1,15</page-break-cols>
  <scale-factor>0.8637016</scale-factor>
  <paper-size>A4</paper-size>
  <landscape>true</landscape>
  <page-order>down-over</page-order>
</print-settings>

Элемент settings

Элемент settings хранит настройки листа: показывать или нет линии сетки и разрывы страниц. Пример:

<settings meta="2087944062">
  <show-page-break>true</show-page-break>
</settings>

Элемент style

Этот элемент хранит информацию о стилях ячеек, строк и столбцов. Пример:

<style color="#000000" font="Arial" font-size="9.75" bold="true" align="left" valign="middle" />

Элемент row

Элементы Row хранят информацию о заголовках строк: высоту строки и текст заголовка. Пример:

<row row="0" height="11" auto-height="false" />

Элемент column

Элементы Column хранят информацию о заголовках столбцов: ширину столбца и его заголовок. Пример:

<col col="0" width="10" auto-width="false" />

Элементы h-border и v-border

Элементы h-border и v-border хранят информацию о границах электронной таблицы. Пример:

<v-border row="24" col="4" color="#000000" style="Dotted" pos="all" rows="7" />

Элемент cell

Элементы cell хранят информацию о ячейках: хранимую в них информацию (данные ячейки, стили ячейки, формат данных ячейки и другое). Пример:

<cell row="1" col="1" colspan="14" format="text">
  <style bgcolor="#00007d" color="#ffffff" font-size="20.25" align="center" />
  Итоговая стоимость проекта
</cell>

Сохранение и загрузка

Единственный лист

С помощью вызова методов листа для сохранения или загрузки единственного листа:

// сохранение
worksheet.SaveRGF(файл или поток);
// загрузка
worksheet.LoadRGF(Файл или поток);

Множество листов или содержимое книги

Текущая версия ReoGrid не поддерживает сохранение и загрузку целой книги в формате RGF. Приложение должно сохранять и загружать листы путём вызова соответствующих методом для каждого листа.

как это можно сделать на практике:

Сохранение множества листов

var savingList = new List<string>();

foreach (var worksheet in reoGridControl.Worksheets)
{
  if (ShouldSaveThisWorksheet(worksheet) == true)
  {
    // сохранение
    worksheet.SaveRGF(string.Format("C:\\MyPath\\{0}.rgf", worksheet.Name));

    // добавление имени листа в список сохранения
    savingList.Add(worksheet.Name);
  }
}

Загрузка множества листов

foreach(var sheetName in savingList)
{
  // создание экземпляра листа согласно данному имени
  var worksheet = reoGridControl.CreateWorksheet(sheetName);

  // загрузка листа из потока
  worksheet.LoadRGF(string.Format("C:\\MyPath\\{0}.rgf", sheetName));
}

Цель: Общий поток

using(var ms = new MemoryStream())
{
  // сохранение
  worksheet.SaveRGF(ms);
  // загрузка
  worksheet.LoadRGF(ms);
}

Цель: файл

// сохранение
worksheet.SaveRGF("C:\\MyPath\\MyFile.rgf");
// загрузка
worksheet.LoadRGF("C:\\MyPath\\MyFile.rgf");

Цель: байтовый массив

byte[] buf = null;

// сохранение
using (var ms = new MemoryStream())
{
  worksheet.SaveRGF(ms);
  buf = ms.ToArray();
}

// загрузка
using (var ms = new MemoryStream(buf))
{
  worksheet.LoadRGF(ms);
}

Цель: строка

string content = null;

// сохранение
using (var ms = new System.IO.MemoryStream())
{
  sheet.SaveRGF(ms);
  content = Encoding.Default.GetString(ms.ToArray());
}

// загрузка
using (var ms = new System.IO.MemoryStream(Encoding.Default.GetBytes(content)))
{
  sheet.LoadRGF(ms);
}

Замечания

Текущая версия ReoGrid поддерживает сохранение содержимого только одного листа в файл формата RGF. Поддержка хранения множества листов в этом формате планируется в будущих версиях. В качестве обходного пути, для сохранения или загрузки содержимого книги, можно использовать формат файлов Excel.

Отличия от формата файлов Excel

В плане сохранения данных, существуют некоторые отличия между форматом файлов ReoGrid и форматом файлов Excel. Подробнее см. на странице Отличия между форматами ReoGrid и Excel.


Далее: Формула