вторник, октября 23, 2007

Экспорт из DataGrid в Excel через буфер

Немного переделал функцию по экспорту данных из dataProvider'а DataGrid в Excel. В качестве источника данных выступает ArrayCollection.

private function exportToExcel(dg:DataGrid, fields:Array):void
{
var dp:ArrayCollection = dg.dataProvider as ArrayCollection;
if (dg == null || dp==null || dp.length==0 || fields == null || fields.length==0) {
Alert.show("Ошибка экспорта.");
return;
}
var i:int;
var j:int;
var l_dp:int = dp.length;
var l_f:int = fields.length;
var result:String = "";
for (i=0; i<l_f; i++)
{
result += fields[i][1];
if (i!=(l_f-1)) result+='\t';
}
result +='\r\n';
for (i=0; i<l_dp; i++)
{
for (j=0; j<l_f; j++)
{
var prop:String = fields[j][0];
var l_col:int = dg.columns.length;
var k:int;
for (k=0; k<l_col; k++)
{
if (prop == dg.columns[k].dataField)
{
break;
}
}
var f:Function = dg.columns[k].labelFunction;
if (f != null)
{
result += f(dp[i], dg.columns[k]);
}
else result += dp[i][prop];
if (j!=(l_f-1)) result+='\t';
}
result +='\r\n';
}
System.setClipboard(result);
}

Вызываем так:

exportToExcel(grd,
[['title','Заголовок'], ['rank','Рейтинг'],
['views', 'Просмотров'],['comp', 'Конкурсы'],
['access', 'Доступность'], ['pics','Количество изоб-й']])
,

grd - id нашего DataGrid, а делее идет массив с dataField и заголовками колонок.
При экспорте также учитывается labelFunction. После выполнения функции данные можно смело вставлять в таблицу Excel.

8 комментариев:

Рост комментирует...

Чел, ну ты даешь. Дайте линейку мне, нужно измерить восторг! :-)

Andrey Gorbatov комментирует...

Спасибо, Рост.

Ivan комментирует...

Статью надо было назвать ваши убитые недели...
Сколько читаю этот блог всегда приятно удивляюсь мыслям этого человека. +++
Очень хотелось бы чтоб статей бало побольше)))

Andrey Gorbatov комментирует...

теперь дайте линейку мне :)
очень рад, что это кому-то помогло.

Ivan комментирует...

Эту супер полезную статью я прочитал давно, но реально её применить понадобилось только на днях. И вот с какой я столкнулся проблемой. В флексе для расчета мат. выражений используется символ разделителя "." ,а в Excel'e это "," т.о. после экспорта не очень удобно работать с этими данными. Очень хотелось бы получить ответ на этот вопрос. Заранее спасибо.

Анонимный комментирует...

Огромное спасибо

Анонимный комментирует...

[b]GPS оборудование [/b]

GPS - глобальная система позиционирования, определение местоположения путём измерения расстояний до объекта от точек с известными координатами — спутников. Расстояние вычисляется по времени задержки распространения сигнала от посылки его спутником до приёма антенной GPS-приёмника. То есть, для определения трёхмерных координат GPS-приёмнику нужно знать расстояние до трёх спутников и время GPS системы[1]. Таким образом, для определения координат и высоты приёмника, используются сигналы как минимум с четырёх спутников.

[b]GSM оборудование [/b]

GSM-системы (on-line системы) позволяют получать информацию от оборудования мониторинга по каналам передачи операторов мобильной связи. Таким образом, съем информации с оборудования происходит в любой момент времени без непосредственного доступа к нему. В этом состоит основное преимущество GSM-систем перед off-line системами, требующими непосредственного подключения модулей мониторинга к персональному компьютеру. Наше оборудование поддерживает все технологии передачи информации по сети GSM: SMS, CSD, GPRS, Voice.

[b]Счетчики топлива [/b]

Применение топливных счетчиков позволяет предприятиям получить объективную информацию о времени работы машин, вести постоянный контроль реального потребления горючего. При помощи DFM можно разработать нормы расхода ГСМ на отдельных маршрутах и технологических операциях.
Экономический эффект применения приборов учета топлива различен на разных предприятиях, обычно от 10 до 40 %, в зависимости от запущенности исходной ситуации и настойчивости менеджмента автопредприятия.

Link: http://gps-group.at.ua/

веб разработка и реализация комментирует...

анализ разработки разработка сайтов http://web-miheeff.ru анализ разработки