Файл формата 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.